Forum Webscript.Ru
Программирование => Perl => Тема начата: Yuraz от 31 Июля 2002, 09:27:30
-
Идея эта здесь давно освещалась, когда скрипт написан и отлажен, хотелось бы все названия переменных поменять на названия с длинными названиями, т.е. было например $ip, а стало $gthjrgkmjrhkjrmnmthknmtkyjhrgklrfekhtlrkthlrtkhj .... красиво, не правда ли ? Ну и потом закачать на хостинг, чтобы твои скрипты особо по рукам не расходились.
Задача такая, менять все переменные на случ. сгенерированные, от 30 символов. За одним можно и перевод каретки убрать.
PS: переименовывание кроме переменных $ENV, $FORM и др.
Я это делал на Delphi, в Memo загонял скрипт, анализировал, сколько там чего, короче не получалось вычислить окончание переменной, да и ещё проблемы были, так и не дописал в итоге. Да и на паскале это очень громоздко получается.
Может кто поможет это на перле сделать?
-
$gthjrgkmjrhkjrmnmthknmtkyjhrgklrfekhtlrkthlrtkhj
1. данное имя не катит, т.к. ограничение на длину названия переменной, не помню точно, по-моему 15 символов.
2. обратную операцию (по "укорачиванию" имён переменных) провести ничуть не сложнее, чем по "удлинению".
3. если ты не будешь выкладывать свои скрипты для скачивания, то и расходится они не будут.
4. а вообще без особых на то причин жлобиться не стоит, и наоброт, стараться сделать свой код как можно более понятным и читаемым (имена глобальных переменных с большой буквы, дескрипторы большими буквами и т.п.), больше свободнораспространяемых скриптов хороших и разных!
5. если тебе всё-таки это надо:
1) поищи по форуму, уже обсуждали (ищи в т.ч. и в CGI-скриптах), там вроде были ссылки на нужные тебе скрипты и проги.
2) если ничего интересующего не найдёшь попробуй написать сам, подумай над регулярными выражениями, по-моему это не слишком сложно...
6. сам подобный скрипт не писал поэтому и готовое решение предложить не могу.
-
С длиной как раз все нормально.
А поизвращаться со скриптом это будет прикольно!!!
Позаменяй всякие $i и ты пы на конcтрукции вида $::{\'!@#$%\'}. Тогда народ твоих скриптов из-за очевидной непонятности бояться будет! :)
-
С длиной как раз все нормально.
Гм... Говорю же длина ограничена ну если не 15 то 30 сиволами точно, хотя сколько я помню всё-таки 15.
$i и ты пы на конcтрукции вида $::{\'!@#$%\'}
Ага, и тогда народ, да и ты сам, не сможешь пользоваться скриптом - это недопустимое имя переменной.
в именах переменных используются только буквы, цифры и символы подчёркивания, причём может начинаться только с буквы или символа подчёркивания.
-
stah@banquet$ perl
$q1234567890123456789012345678901234567890q = 1;
$q1234567890123456789012345678901234567890w = 2;
print "$q1234567890123456789012345678901234567890q\\n";
print "$q1234567890123456789012345678901234567890w\\n";
__END__
1
2
Видишь длина то однако больше 30 символов. :)
stah@banquet$ perl
$::{\'!@#$%\'} = 1;
print "$::{\'!@#$%\'}\\n";
__END__
1
Работает однако!!! :)
Не прав ты Глебушка!!! :)
-
Видишь длина то однако больше 30 символов.
да, действительно работает, даже не огрызается, странно..
$::{\'!@#$%\'} = 1;
попробуй это с директивой use strict; выдаст ошибку (естественно не забыв объявить переменную заранее, а то ошибка будет в любом случае:-).
Но ты прав, факт тот, что работать будет, хотя вот такое уже не работает: $::%$&$&...
Не прав ты Глебушка!!!
Каюсь:-)
-
stah@banquet$ perl
use strict;
use warnings;
$::{\'*&(*^&%(^*^\'} = 111;
print "$::{\'*&(*^&%(^*^\'}\\n";
__END__
111
Опять ты не прав! :)
-
use strict;
use warnings;
$::{\'*&(*^&%(^*^\'} = 111;
print "$::{\'*&(*^&%(^*^\'}\\n";
Попробуй так:
use strict;
use warnings;#а что это за пргма-библиотека? Не слышал о ней...
my $::{\'*&(*^&%(^*^\'} = 111;
print "$::{\'*&(*^&%(^*^\'}\\n";
ГЫ. Прикольные глюки. Встроенная функция my ругается на такие переменные. ИМХО. (или я опять чего не так понял:-)? Да и use strict; эти переменные игнорирует. Так что перед преобразованием скрипт придётся переделывать, убирая функцию my. Ну для меня, например, это мало приемлимо, т.к. я уже привык писать с use strict; переделывать придётся очень много, а в скрипте-"удлинителе":-) предусмотреть такое сложно.
-
use warnings; - прагма, которую предлагается использовать вместо perl -w, начиная с версии 5.6.0
Конечно с my работать не будет. Ты же сам писал спецификацию на имя переменной. Разве $::{\'%*%$^*(%&\'} подходит под твое описание правильной переменной?!
-
Защита не от всех, просто у нас на хостинге очень быстро всё расходится (kirov.ru), но все фирмы города всё равно хостятся на kirov.ru
Далее, не силён пока в регул. выражениях... конечно бы тогда не спрашивал.. на делфаке примерно выглядит так: нахожу все значки доллара ($) и беру, в данном случае 10 букв. По идее надо брать сколько букв в переменной. Потом есть кнопка, жму, найденные пеерменные заменяются. (это ещё в голове...)
procedure Tf.SpeedButton2Click(Sender: TObject);
const len: string =\'abcdefghijklm_0123456789nopqrstuvwxyz\';
var
s,s1,p,p1:string;
i,j,a,b:integer;
begin
for i:=0 to RichEdit1.Lines.Count-1 do begin
for j:=1 to Length(RichEdit1.Lines) do begin
s:=copy(RichEdit1.Lines,j,1);
if s=\'$\' then begin //нашли символ переменной
for a:=j to j+10 do begin //Length(RichEdit1.Lines) do begin
p:=copy(RichEdit1.Lines,a,1);
for b:=1 to Length(len) do begin
if p=len then
p1:=p1+p
else
end;
end;
Memo1.Lines.Add(p1);
p1:=\'\';
end;
end;
end;
end;