perl grammer


Process Control

Divergenceif(CONDITION){}elsif(){}else{}
While Loopwhile(CONDITION){}
Break Looplast;
Continue Loopnext;
Redo Loopredo;
For Loopfor($i=1;$i<10;$i++){}
Foreach Loopforeach $x (@a){print $x;}

Data Type

String

Concatenation$z=$x.$y;
Length$n = length(@x);
Substring$y = substr($x,$start,$end);
Seek$y = index($body,$key,$start);
Split$y = split(/$delim/,$x);
Replace$x =~ s/IN/OUT/g
Here Documentation $x = << SOME_END_TAG;
xxxxx
yyyyy
SOME_END_TAG

List

Substitution$x[$i]='test';
Reference$xi = $x[$i];
Initialize@x = (1, 2, 3, 4, 5, 6);
Concatenation@z = (@x,'test1','test2',@y);
Pop from tail$y = pop(@x);
Push in tailpush(@x,'newdata');
Pop from head$y = shift(@x);
Push in headunshift(@x,'newdata');
Number of Elements$n = scalar(@x);

Hash

Create$x{'name'}=>'taro';
Reference$name = $x{'name'};
Initialize%x = ('name'=>'taro', 'age'=>10);
Existenceif(exists($x{'name'})){}
Concatenation%z = (%x,%y);
Deletiondelete($x{'name'});
List keys@k = keys(%x);
List values@v = values(%x);

Boolean

Numeric 0 = false, other = true
String "" = false, other = true

Operators

Remainder%
Power**
Numerical Equal==
Numerical Unqual!=
String Equaleq
String Unqualne
String Greater as Numbergt
String Smaller as Numberlt
String Match$x =~ /REGULAR_EXPRESSION/MODIFIER
String Unmatch$x !~ /REGULAR_EXPRESSION/MODIFIER
String Repeat$y = $x x $n;
Andand, &&
Oror, ||
Notnot(), !
floorint($x)
Random from 0 to n: rand($n)

Meta Charactor

ESC\e
TAB\t
SPC\s
Newpage\f
Newline\n
Rewriteline\r
BELL\a
Octadecimal\0
Hexadecimal\x
All Decimal\d
All Not Decimal\D
All Alphabet\w
All Not Alphabet\W
All Control Char.\c
All Not SPC\S

File Access

Open for Readopen FILEHANDLE, "<$filename";
Open for Writeopen FILEHANDLE, ">$filename";
Open for Appendopen FILEHANDLE, ">>$filename";
Read File@list = <FILEHANDLE>;
Write Fileprint FILEHANDLE "somestring";
Close Fileclose FILEHANDLE;
Making Directorymkdir($dirname);
Changing Directorychdir($dirname);
Remove Directoryrmdir($dirname);
Get Status($fsdevid, $inode, $filemode, $nlink, $userid,
$groupid, $devid, $bytes, $atime, $mtime,
$ctime, $blocksize, $nblocks) = stat($filename);
ls@list = glob("LS_STRING");

Regular Expression

Head/^somekey/
Tail/somekey$/
Wildcard(0-inf)somekey*
Wildcard(1-inf)somekey+
Wildcard(0-1)somekey?
Wildcard(n)somekey{n}
Wildcard(n-inf)somekey{n,}
Wildcard(0-m)somekey{n,m}
Orsomekey1|somekey2

Interfaces

Commandline Arguments@ARGV[0] ([0] means first parameter)
CGI form (GET)%ENV

date

Current Second$from1970 = $time();
Humanized($sec,$min,$hour,$day,$mon,$year,$weekday,$summerday) = localtime(time()); $mon++; $year+=1900;