<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=Content-Type content="text/html; charset=iso-8859-2">
<META content="MSHTML 6.00.6000.16825" name=GENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
<DIV>Cześć,<BR><BR>Na spotkaniu w środę pokazywałem kuriozalny skrypt
PERLowy<BR>znaleziony gdzieś w Internecie:<BR><BR>#
------------------------------------------------------------<BR>not exp log
srand xor s qq qx xor<BR>s x x length uc ord and print chr<BR>ord for qw q join
use sub tied qx<BR>xor eval xor print qq q q xor int<BR>eval lc q m cos and
print chr ord<BR>for qw y abs ne open tied hex exp<BR>ref y m xor scalar srand
print qq<BR>q q xor int eval lc qq y sqrt cos<BR>and print chr ord for qw x
printf<BR>each return local x y or print qq<BR>s s and eval q s undef or oct
xor<BR>time xor ref print chr int ord lc<BR>foreach qw y hex alarm chdir
kill<BR>exec return y s gt sin sort split<BR>#
------------------------------------------------------------<BR><BR>który
drukuje 'just another perl hacker'<BR><BR>Fajne, prawda?<BR><BR>Przeprowadziłem
badania nad nim i zainteresowanym przesyłam objasnienie.<BR><BR>#
------------------------------------------------------------<BR><BR>
## zewnetrznie, caly program stanowi kilka wyrazen polaczonych operatorem
'xor'<BR>
## a na koncu
'or';<BR>
## aby policzyć jego wartosc, interpreter liczy wszystkie
podwyrazenia<BR>
## od lewej do
prawej<BR><BR>
## wyrazenie 'not exp log srand' jest obliczane
ale<BR>
## wraz z lacznikiem 'xor' nie ma zadnego znaczenia<BR>#
not<BR># exp<BR># log srand<BR>#
xor<BR>
## substytucja z separatorem 'q' wstawia do wartosci zmiennej $_ jedna
spacje<BR>
## ktora bedzie potrzebna zaraz
dalej;<BR>
## w tej instrukcji na koncu zamiast 'qx' rownie dobrze mogloby byc
'q'<BR> s qq
qx<BR>xor<BR>
## w nastepnej linijce zaczyna sie wyrazenie substytucji wartosci zmiennej $_
,<BR>
## z separatorem 'x' i spacja we wzorcu; w efekcie do zmiennej $_
zostanie<BR>
## wpisana zawartosc nastepnych linijek (bez koncowego 'x')<BR> s x
x<BR>
## wyrazenie 'length uc
ord'<BR>
## wraz z lacznikiem 'and' nie ma zadnego
znaczenia<BR>#
length<BR>#
uc<BR>#
ord<BR>#
and<BR>
print
## 'just' - pierwsze litery slow z
listy<BR>
chr<BR>
ord<BR>
for
qw<BR>
q<BR>
join<BR>
use<BR>
sub<BR>
tied<BR>
qx<BR>xor<BR>
eval
## wykonuje 'print' wpisany wczesniej do '$_'<BR>xor<BR> print qq q
q
## pierwsza spacja (miedzy literami 'q')<BR>xor<BR>#
int
## 'int' bez znaczenia<BR>
eval<BR>
lc<BR>
## wyrazenie
'cos'<BR>
## wraz z lacznikiem 'and' nie ma zadnego
znaczenia<BR>
q<BR>
m<BR>#
cos<BR>#
and<BR>
print chr ord ## 'another' - pierwsze litery slow z
listy<BR>
for
qw<BR>
y<BR>
abs<BR>
ne<BR>
open<BR>
tied<BR>
hex<BR>
exp<BR>
ref<BR>
y<BR>
m<BR>xor<BR>
## funkcje 'srand' i 'scalar' zastosowane do wyniku
'print'<BR>
## daja wartosc która jest ignorowana<BR># scalar
srand<BR> print qq q q ## druga spacja (miedzy
literami
'q')<BR>xor<BR>
## operacja 'int' nie ma zadnego znaczenia<BR># int<BR>
eval<BR>
lc<BR>
## 'perl' - pierwsze litery slow z listy<BR>
qq<BR>
y<BR>
## zlozenie funkcji 'cos' i
'sqrt'<BR>
## wraz z lacznikiem 'and' nie ma zadnego
znaczenia<BR>#
sqrt cos<BR>#
and<BR>
print<BR>
chr
ord<BR>
for
qw<BR>
x<BR>
printf<BR>
each<BR>
return<BR>
local<BR>
x<BR> y<BR>or<BR>
print qq s s ## trzecia spacja (miedzy literami 's')<BR>
and<BR>
## 'hacker' - pierwsze litery slow z
listy<BR><BR>
## operator 'q' z separatorem 's' zwraca tekst nastepnych
linijek,<BR>
## ktory stanie sie argumentem 'eval'<BR>
eval<BR>
q<BR>
s<BR>
## podwyrazenia 'undef', 'oct',
'time'<BR>
## wraz z lacznikami 'or' i 'xor' nie maja zadnego
znaczenia<BR>#
undef<BR>#
or<BR>#
oct<BR>#
xor<BR>#
time<BR>#
xor<BR>
## operator 'ref' dalej, dziala na wyniku
'print'<BR>
## ale jego wynik
ignorujemy<BR>#
ref<BR>
print ## 'hacker' - poczatkowe
litery
wyrazow<BR>
chr int ord
lc<BR>
foreach
qw<BR>
y<BR>
hex<BR>
alarm<BR>
chdir<BR>
kill<BR>
exec<BR>
return<BR>
y<BR>
s<BR>
## operacja porownania z wynikiem operacji 'split', 'sort',
'sin'<BR>
## jest pomijalna<BR># gt
sin sort split<BR><BR>#
------------------------------------------------------------<BR><BR>Smacznego,<BR><BR>Stanisław
Romański<BR><BR></DIV></BODY></HTML>