緲昏瘧鑷細(xì)perldoc.perl.org
== 甯哥敤鍙橀噺 ==
$ARG
$_
榛樿妯″紡鎼滅儲(chǔ)鍙橀噺
涓嬪垪鍑芥暟浣跨敤瀹冧綔涓洪粯璁ゅ弬鏁幫細(xì)
abs, alarm, chomp, chop, chr, chroot, cos, defined, eval, exp, glob, hex, int, lc, lcfirst,
length, log, lstat, mkdir, oct, ord, pos, print, quotemeta, readlink, readpipe, ref, require,
reverse (in scalar context only), rmdir, sin, split (on its second argument), sqrt, stat,
study, uc, ucfirst, unlink, unpack.
鐢ㄤ簬鏂囦歡嫻嬭瘯 (-f, -d)
鐢ㄤ簬妯″紡鍖歸厤鎿嶄綔 m//, s/// 鍜?tr// (鍙堝悕 y///)
鐢ㄤ簬 foreach, grep, map
鐢ㄤ簬 given 璇彞
@ARG
@_
瀵逛簬鍑芥暟鏉ヨ錛孈_ 鍖呭惈浜?jiǎn)浼犻掔粰璇ュ嚱鏁扮殑鍙傛暟銆傚湪鍑芥暟涓紝@_ 鏄?push, pop, shift, unshift 鐨勯粯璁ゅ弬鏁般?/br>
$LIST_SEPARATOR
$"
褰撲竴涓暟緇勮寮曠敤鍦?"" 涓垨鑰?// 涓傛暟緇勭殑鍊煎彉?shù)负鎵鏈夊厓绱犺 $" 榪炴帴璧鋒潵鐨勫箋?/br>
$" 榛樿鍊間負(fù)絀烘牸銆?/br>
print "The array is: @array\n";
print "The array is: " . join($", @array) . "\n";
瀹冧滑鏄浉絳夌殑銆?/br>
@a = (1, 3, 4);
print "@a\n";
$" = ",";
print "@a\n";
print "1,3,4" =~ /@a/;
杈撳嚭涓?/br>
1 3 4
1,3,4
1
$PROCESS_ID
$PID
$$
榪愯 perl 鑴氭湰鐨勫綋鍓嶈繘紼嬬殑 pid 鍊箋傜瓑鍚屼簬 getpid()銆?/br>
$REAL_GROUP_ID
$GID
$(
璇ヨ繘紼嬬殑 real gid 銆傜敱 getgid() 鑾峰緱銆?/br>
濡傛灉榪愯鍦ㄤ竴涓敮鎸佺敤鎴峰悓鏃跺睘浜庡涓粍鐨勬搷浣滅郴緇熶笂錛?( 灝嗚繑鍥炵敱絀烘牸鍒嗛殧鐨勫涓?gid銆傜敱 getgroups() 鑾峰緱銆?/br>
鍙兘緇?$( 璧嬩簣鍗曚釜鏁存暟銆?/br>
$EFFECTIVE_GROUP_ID
$EGID
$)
璇ヨ繘紼嬬殑 effective gid銆?/br>
$< = $>; # set real to effective uid
($<,$>) = ($>,$<); # swap real and effective uids
$PROGRAM_NAME
$0
褰撳墠紼嬪簭鐨勫悕瀛椼?/br>
$SUBSCRIPT_SEPARATOR
$SUBSEP
$;
濡傛灉榪欐牱璁塊棶涓涓搱緋昏〃錛?/br>
$foo{$a,$b,$c}
絳夊悓浜庯細(xì)
$foo{join($;, $a, $b, $c)}
渚嬪瓙錛?/br>
%h = ('123', 'test');
$; = '';
print $h{1,2,3}; # 杈撳嚭 test
%ENV
瀛樻斁鐜鍙橀噺鍝堝笇琛ㄣ?/br>
@F
褰撴寚瀹氫簡(jiǎn) -a 鍙傛暟鐨勬椂鍊欙紝@F 涓繚瀛樼潃姣忎竴琛岃鍒嗛殧鍚庣殑鏁扮粍錛?/br>
perl -ane 'print pop(@F), "\n";'
絳夊悓浜?/br>
while (<>) {
@F = split(' ');
print pop(@F), "\n";
}
$OSNAME
$^O
褰撳墠鎿嶄綔緋葷粺鐨勫悕瀛椼?/br>
# perl -e "print $^O"
# linux
%SIG
鍝堝笇 %SIG 涓繚瀛樹(shù)簡(jiǎn)淇″彿鐨勫鐞嗗嚱鏁般備緥瀛愬涓嬶細(xì)
sub handler { # 1st argument is signal name
my($sig) = @_;
print "Caught a SIG$sig--shutting down\n";
close(LOG);
exit(0);
}
$SIG{'INT'} = \&handler;
$SIG{'QUIT'} = \&handler;
...
$SIG{'INT'} = 'DEFAULT'; # restore default action
$SIG{'QUIT'} = 'IGNORE'; # ignore SIGQUIT
璧嬪間負(fù) 'IGNORE' 鍒欏拷鐣ヨ淇″彿錛岄櫎浜?CHLD 淇″彿銆?/br>
涓嬮潰鏄寚瀹氬鐞嗗嚱鏁扮殑鍏朵粬鏂瑰紡錛?/br>
$SIG{"PIPE"} = "Plumber"; # 鎸囧畾涓?main::Plumber (涓嶆帹鑽?
$SIG{"PIPE"} = \&Plumber; # 鎺ㄨ崘鐨勬柟寮?
$SIG{"PIPE"} = *Plumber; # 鏈夌偣濂囨?
$SIG{"PIPE"} = Plumber(); # 閿欒鐨勫仛娉曪紝Plumber() 浼?xì)杩斿洖浠涔堬紵錛?
閮ㄥ垎鍐呴儴鐨?hook 涔熷彲浠ラ氳繃璁劇疆 SIG 鏉ユ寚瀹氥傛瘮濡傝錛?/br>
local $SIG{__WARN__} = sub { die $_[0] };
eval $proggie;
褰撲竴涓?warning 琚姏鍑虹殑鏃跺欙紝$SIG{__WARN__} 鎵鎸囧悜鐨勫嚱鏁板皢琚皟鐢ㄣ?/br>
warning 娑堟伅鐨勫唴瀹逛負(fù)鍑芥暟鐨勭涓涓弬鏁般?/br>
$BASETIME
$^T
紼嬪簭寮濮嬭繍琛岀殑鏃墮棿(鏃墮棿鎴?
# perl -e "print $^T"
1314234806
$PERL_VERSION
$^V
perl 鐨勭増鏈彿
warn "Hashes not randomized!\n" if !$^V or $^V lt v5.8.1
== 鍜屾鍒欒〃杈懼紡鐩稿叧鐨勫彉閲?==
$<digits> ($1, $2, ...)
鍖歸厤涓?() 鍖歸厤鐨勯儴鍒嗐?/br>
$&
$MATCH
鍓嶄竴嬈℃垚鍔熷尮閰嶇殑瀛楃涓層?/br>
$`
$PREMATCH
浣嶄簬鍓嶄竴嬈℃垚鍔熷尮閰嶅瓧絎︿覆鍓嶉潰鐨勫瓧絎︿覆銆?/br>
$'
$POSTMATCH
浣嶄簬鍓嶄竴嬈℃垚鍔熷尮閰嶅瓧絎︿覆鍚庨潰鐨勫瓧絎︿覆銆?/br>
local $_ = 'abcdefghi';
/def/;
print "$`:$&:$'\n"; # 杈撳嚭 abc:def:ghi
$LAST_PAREN_MATCH
$+
鍓嶄竴嬈℃垚鍔熷尮閰嶄腑鏈鍚庝竴涓?() 涓殑鍐呭銆?/br>
/Version: (.*)|Revision: (.*)/ && ($rev = $+);
@LAST_MATCH_END
@+
鍓嶄竴嬈℃垚鍔熷尮閰嶄腑姣忎釜 () 鍖歸厤鐨勫亸縐婚噺銆?/br>
$+[0] 涓烘暣涓尮閰嶆湯灝劇殑鍋忕Щ閲?/br>
$+[1] 涓?$1 鏈熬鐨勫亸縐婚噺
$+[2] 涓?$2 鏈熬鐨勫亸縐婚噺
...
$#+ 涓哄墠涓嬈℃垚鍔熷尮閰嶇殑 () 鏁伴噺
%LAST_PAREN_MATCH
%+
鍓嶄竴嬈℃垚鍔熷尮閰嶄腑鍛藉悕鍖歸厤錛堝嵆涓?(?<name>...) 鐨勫艦寮忥級(jí)鐨勫搱緋昏〃銆?/br>
濡傦細(xì)
'foo' =~ /(?<foo>foo)/; # $+{foo} 鍜?$1 涓兘瀛樻斁鐫 'foo'
鍙﹀涓涓緥瀛愶細(xì)
$_ = "testing1234end";
/^testing(.)(.)(..)end/;
print "@+"; # 杈撳嚭 14 8 9 11
/^(?<foo>[a-z]+)(?<num>\d+)/;
print "$+{foo}"; # 杈撳嚭 testing
print "$+{num}"; # 杈撳嚭 1234
@LAST_MATCH_START
@-
鍜?@+ 綾諱技錛?/br>
$-[0] 涓烘暣涓尮閰嶅ご閮ㄧ殑鍋忕Щ閲?/br>
$-[1] 涓?$1 澶撮儴鐨勫亸縐婚噺
$-[2] 涓?$2 澶撮儴鐨勫亸縐婚噺
...
$` 絳夊悓浜?substr($var, 0, $-[0])
$& 絳夊悓浜?substr($var, $-[0], $+[0] - $-[0])
$' 絳夊悓浜?substr($var, $+[0])
$1 絳夊悓浜?substr($var, $-[1], $+[1] - $-[1])
$2 絳夊悓浜?substr($var, $-[2], $+[2] - $-[2])
$3 絳夊悓浜?substr($var, $-[3], $+[3] - $-[3])
%LAST_MATCH_START
%-
綾諱技浜?%+錛岄氳繃 %- 鍙互璁塊棶鍒頒笂涓嬈℃垚鍔熷尮閰嶄腑鎵鏈夌殑鍛藉悕鍖歸厤銆?/br>
姣忎釜鍛藉悕鍖歸厤鐨勫悕瀛楅兘涓庝竴涓暟緇勭浉鍏寵仈銆?/br>
姣斿璇達(dá)細(xì)
if ('1234' =~ /(?<A>1)(?<B>2)(?<A>3)(?<B>4)/) {
foreach my $bufname (sort keys %-) {
my $ary = $-{$bufname};
foreach my $idx (0..$#$ary) {
print "\$-{$bufname}[$idx] : ",
(defined($ary->[$idx]) ? "'$ary->[$idx]'" : "undef"),
"\n";
}
}
}
浼?xì)杈撳嚭锛?xì)
$-{A}[0] : '1'
$-{A}[1] : '3'
$-{B}[0] : '2'
$-{B}[1] : '4'
== 鍜屾枃浠跺彞鏌勭浉鍏崇殑鍙橀噺 ==
$ARGV
<> 涓鍦ㄨ璇誨彇鐨勬枃浠剁殑鍚嶅瓧
渚嬪瓙錛?/br>
# cat c
1
2
# cat d
1
2
3
4
# cat a.pl
while (<>) {
print "$ARGV\n";
}
# perl a.pl c d
c
c
d
d
d
d
@ARGV
鍛戒護(hù)琛屽弬鏁幫紝$ARGV[0] 浠h〃絎竴涓弬鏁幫紙鑰屼笉鏄▼搴忕殑鍚嶅瓧錛夈?/br>
$OUTPUT_FIELD_SEPARATOR
$OFS
$,
print 鍑芥暟鐨勮緭鍑哄垎闅旂錛岄粯璁ゅ間負(fù) undef銆?/br>
渚嬪瓙錛?/br>
print "a", "c"; # 杈撳嚭 ac
$, = "|";
print "a", "c"; # 杈撳嚭 a|c
$INPUT_LINE_NUMBER
$NR
$.
涓婁竴嬈¤鍙栨枃浠剁殑琛屽彿銆?/br>
$. 鍦ㄦ枃浠跺彞鏌勫叧闂殑鏃跺欓噸緗?/br>
鐢變簬 <> 鎿嶄綔絎︿笉浼?xì)鍏抽棴鏂囦挥灱屽洜姝ゅ湪杩灳l粠 ARGV 璇誨彇鏂囦歡鐨勬椂鍊欙紝$. 浼?xì)涓嶆柇澧炲姞銆?/br>
渚嬪瓙錛?/br>
# cat a.pl
while (<>) {
print "$.\n";
}
# perl a.pl c d
1
2
3
4
5
6
鍏朵腑 c d 鐨勯暱搴﹀垎鍒負(fù) 2, 4 琛屻?/br>
$INPUT_RECORD_SEPARATOR
$RS
$/
綾諱技浜?awk 鐨?RS 鍙橀噺銆傚畠鍐沖畾浜?perl 濡備綍鍒嗗壊琛屻?/br>
渚嬪瓙錛?/br>
# cat c
1|2|3
# cat a.pl
$/ = "|";
while (<>) {
print "line:$_\n";
}
# perl a.pl c
line:1|
line:2|
line:3
$OUTPUT_RECORD_SEPARATOR
$ORS
$\
print 鍑芥暟杈撳嚭鐨勫垎闅旂銆傞粯璁ゅ間負(fù) undef錛屽鏋滃畾涔変簡(jiǎn)錛屽垯鍦?print 瀹屾墍鏈夊弬鏁板悗杈撳嚭 $\銆?/br>
渚嬪瓙錛?/br>
$\ = "|";
print "a";
print "b";
# 灝嗚緭鍑?a|b|
$OUTPUT_AUTOFLUSH
$|
濡傛灉璁劇疆涓洪潪0鐨勫鹼紝灝嗗己鍒剁殑 flush 褰撳墠 selected 鐨勬枃浠跺彞鏌勩?/br>
錛堢被浼間簬 setbuf(xx, NULL) 錛燂級(jí)
== 鍜岄敊璇俊鎭湁鍏崇殑鍙橀噺 ==
$ERRNO
$!
絳夊悓浜?libc 涓殑 errno銆傚彲浠ヨ漿鎹負(fù) int 鍜?string 涓ょ褰㈠紡錛?/br>
open '/a';
print int($!) . ": $!\n"; # 杈撳嚭 2: 娌℃湁閭d釜鏂囦歡鎴栫洰褰?
$CHILD_ERROR
$?
綾諱技浜?shell 涓殑 $?銆傚彲浠ヤ負(fù)涓嬪垪鎿嶄綔鐨勮繑鍥炲鹼細(xì)
- 鏈鍚庝竴嬈$閬撳叧闂?/br>
- `` 鎴栬?system() 璇彞
- wait() 鎴栬?waitpid()
$? >> 8 涓哄瓙榪涚▼鐨勮繑鍥炲?/br>
$EVAL_ERROR
$@
涓婁竴嬈?eval() 鎿嶄綔鐨勮娉曢敊璇俊鎭?/br>
渚嬪瓙錛?/br>
# cat a.pl
eval "my a";
print "$@";
# perl a.pl
No such class a at (eval 1) line 1, near "my a"
syntax error at (eval 1) line 2, at EOF