青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

糯米

TI DaVinci, gstreamer, ffmpeg
隨筆 - 167, 文章 - 0, 評論 - 47, 引用 - 0
數據加載中……

perl 特殊變量

翻譯自:perldoc.perl.org

== 常用變量 ==

$ARG
$_
默認模式搜索變量
下列函數使用它作為默認參數:
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
@_
對于函數來說,@_ 包含了傳遞給該函數的參數。在函數中,@_ 是 push, pop, shift, unshift 的默認參數。

$LIST_SEPARATOR
$"
當一個數組被引用在 "" 中或者 // 中。數組的值變為所有元素被 $" 連接起來的值。
$" 默認值為空格。
print "The array is: @array\n";
print "The array is: " . join($", @array) . "\n";
它們是相等的。
@a = (1, 3, 4);
print "@a\n";
$" = ",";
print "@a\n";
print "1,3,4" =~ /@a/;
輸出為
1 3 4
1,3,4
1

$PROCESS_ID
$PID
$$
運行 perl 腳本的當前進程的 pid 值。等同于 getpid()。

$REAL_GROUP_ID
$GID
$(
該進程的 real gid 。由 getgid() 獲得。
如果運行在一個支持用戶同時屬于多個組的操作系統上,$( 將返回由空格分隔的多個 gid。由 getgroups() 獲得。
只能給 $( 賦予單個整數。

$EFFECTIVE_GROUP_ID
$EGID
$)
該進程的 effective gid。
$< = $>;            # set real to effective uid
($<,$>) = ($>,$<);  # swap real and effective uids

$PROGRAM_NAME
$0
當前程序的名字。

$SUBSCRIPT_SEPARATOR
$SUBSEP
$;
如果這樣訪問一個哈系表:
$foo{$a,$b,$c}
等同于:
$foo{join($;, $a, $b, $c)}
例子:
%h = ('123', 'test');
$; = '';
print $h{1,2,3}; # 輸出 test

%ENV
存放環境變量哈希表。

@F
當指定了 -a 參數的時候,@F 中保存著每一行被分隔后的數組:
perl -ane 'print pop(@F), "\n";'
等同于
while (<>) {
    @F = split(' ');
    print pop(@F), "\n";
}

$OSNAME
$^O
當前操作系統的名字。
# perl -e "print $^O"
# linux

%SIG
哈希 %SIG 中保存了信號的處理函數。例子如下:
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
賦值為 'IGNORE' 則忽略該信號,除了 CHLD 信號。
下面是指定處理函數的其他方式:
$SIG{"PIPE"} = "Plumber";   # 指定為 main::Plumber (不推薦)
$SIG{"PIPE"} = \&Plumber;   # 推薦的方式
$SIG{"PIPE"} = *Plumber;    # 有點奇怪
$SIG{"PIPE"} = Plumber();   # 錯誤的做法,Plumber() 會返回什么??
部分內部的 hook 也可以通過設置 SIG 來指定。比如說:
local $SIG{__WARN__} = sub { die $_[0] };
eval $proggie;
當一個 warning 被拋出的時候,$SIG{__WARN__} 所指向的函數將被調用。
warning 消息的內容為函數的第一個參數。

$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, ...)
匹配中 () 匹配的部分。

$&
$MATCH
前一次成功匹配的字符串。

$`
$PREMATCH
位于前一次成功匹配字符串前面的字符串。

$'
$POSTMATCH
位于前一次成功匹配字符串后面的字符串。

local $_ = 'abcdefghi';
/def/;
print "$`:$&:$'\n";      # 輸出 abc:def:ghi

$LAST_PAREN_MATCH
$+
前一次成功匹配中最后一個 () 中的內容。
/Version: (.*)|Revision: (.*)/ && ($rev = $+);

@LAST_MATCH_END
@+
前一次成功匹配中每個 () 匹配的偏移量。
$+[0] 為整個匹配末尾的偏移量
$+[1] 為 $1 末尾的偏移量
$+[2] 為 $2 末尾的偏移量
...
$#+ 為前一次成功匹配的 () 數量

%LAST_PAREN_MATCH
%+
前一次成功匹配中命名匹配(即為 (?<name>...) 的形式)的哈系表。
如:
'foo' =~ /(?<foo>foo)/; # $+{foo} 和 $1 中都存放著 'foo'

另外一個例子:
$_ = "testing1234end";
/^testing(.)(.)(..)end/;
print "@+"; # 輸出 14 8 9 11
/^(?<foo>[a-z]+)(?<num>\d+)/;
print "$+{foo}"; # 輸出 testing
print "$+{num}"; # 輸出 1234

@LAST_MATCH_START
@-
和 @+ 類似:
$-[0] 為整個匹配頭部的偏移量
$-[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
%-
類似于 %+,通過 %- 可以訪問到上一次成功匹配中所有的命名匹配。
每個命名匹配的名字都與一個數組相關聯。
比如說:
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";
        }
    }
}
會輸出:
$-{A}[0] : '1'
$-{A}[1] : '3'
$-{B}[0] : '2'
$-{B}[1] : '4'

== 和文件句柄相關的變量 ==

$ARGV
<> 中正在被讀取的文件的名字
例子:
# 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
命令行參數,$ARGV[0] 代表第一個參數(而不是程序的名字)。

$OUTPUT_FIELD_SEPARATOR
$OFS
$,
print 函數的輸出分隔符,默認值為 undef。
例子:
print "a", "c"; # 輸出 ac
$, = "|";
print "a", "c"; # 輸出 a|c

$INPUT_LINE_NUMBER
$NR
$.
上一次讀取文件的行號。
$. 在文件句柄關閉的時候重置。
由于 <> 操作符不會關閉文件,因此在連續從 ARGV 讀取文件的時候,$. 會不斷增加。
例子:
# cat a.pl
while (<>) {
    print "$.\n";
}
# perl a.pl c d
1
2
3
4
5
6
其中 c d 的長度分別為 2, 4 行。

$INPUT_RECORD_SEPARATOR
$RS
$/
類似于 awk 的 RS 變量。它決定了 perl 如何分割行。
例子:
# 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 函數輸出的分隔符。默認值為 undef,如果定義了,則在 print 完所有參數后輸出 $\。
例子:
$\ = "|";
print "a";
print "b";
# 將輸出 a|b|

$OUTPUT_AUTOFLUSH
$|
如果設置為非0的值,將強制的 flush 當前 selected 的文件句柄。
(類似于 setbuf(xx, NULL) ?)

== 和錯誤信息有關的變量 ==

$ERRNO
$!
等同于 libc 中的 errno。可以轉換為 int 和 string 兩種形式:
open '/a';
print int($!) . ": $!\n"; # 輸出 2: 沒有那個文件或目錄

$CHILD_ERROR
$?
類似于 shell 中的 $?。可以為下列操作的返回值:
- 最后一次管道關閉
- `` 或者 system() 語句
- wait() 或者 waitpid()
$? >> 8 為子進程的返回值

$EVAL_ERROR
$@
上一次 eval() 操作的語法錯誤信息。
例子:
# 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

posted on 2011-08-24 23:45 糯米 閱讀(892) 評論(0)  編輯 收藏 引用 所屬分類: Perl


只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久综合狠狠| 国产精品白丝jk黑袜喷水| 久久精品视频在线观看| 亚洲欧美日韩视频二区| 亚洲女同精品视频| 午夜精品久久久久久久男人的天堂 | 亚洲一级免费视频| 亚洲一区二区视频在线观看| 亚洲永久免费av| 久久国产手机看片| 欧美va天堂| 欧美午夜精品久久久久免费视| 国产精品一二一区| 在线不卡免费欧美| 99精品国产99久久久久久福利| 午夜精品一区二区三区电影天堂 | 夜夜嗨一区二区三区| 亚洲在线免费| 另类av一区二区| 91久久精品国产91性色tv| 亚洲精品综合精品自拍| 欧美一区二区三区在线观看| 开心色5月久久精品| 欧美日韩一区二区三区免费看| 国产亚洲激情| 一区二区三区国产精华| 久久久久久国产精品mv| 日韩视频不卡中文| 久久国产精品黑丝| 欧美亚男人的天堂| 亚洲精品一区在线观看| 中文欧美日韩| 最新国产の精品合集bt伙计| 亚洲国产一区视频| 欧美一区二区在线看| 欧美激情在线狂野欧美精品| 性久久久久久| 国产精品二区在线观看| 亚洲区中文字幕| 久久精品国产亚洲精品| 亚洲精品免费一区二区三区| 久久久99国产精品免费| 国产精品一二三四| 宅男精品导航| 欧美国产先锋| 久久精品天堂| 国产一区av在线| 午夜欧美大尺度福利影院在线看| 亚洲精品一区二区三区福利| 欧美高清视频www夜色资源网| 亚洲大胆视频| 欧美福利一区二区三区| 久久永久免费| 亚洲国产精品久久久| 久久夜色精品国产欧美乱| 小处雏高清一区二区三区| 国产精品视频一二| 欧美伊人久久| 欧美综合第一页| 在线成人国产| 亚洲成人在线视频播放 | 亚洲深夜福利| 亚洲乱亚洲高清| 欧美午夜精品理论片a级按摩| 亚洲一区二区网站| 亚洲系列中文字幕| 国产精品乱子乱xxxx| 新67194成人永久网站| 欧美一区二区| 亚洲高清毛片| 亚洲激情另类| 国产精品久久久久久av下载红粉| 新狼窝色av性久久久久久| 亚洲女同性videos| 一区二区三区在线不卡| 免费视频久久| 欧美精品国产精品| 欧美一级视频精品观看| 久久久91精品国产一区二区三区| 亚洲激情综合| 在线视频日韩精品| 韩国在线视频一区| 亚洲久久一区| 国产欧美日韩另类视频免费观看| 久久一区二区精品| 欧美精品久久99| 久久精品一区二区三区不卡牛牛| 欧美日本中文字幕| 开心色5月久久精品| 久久久九九九九| 99re视频这里只有精品| 亚洲在线播放电影| 亚洲国产岛国毛片在线| 日韩亚洲精品电影| 狠狠v欧美v日韩v亚洲ⅴ| 亚洲激情成人在线| 国产亚洲激情| 99re热这里只有精品免费视频| 国产欧亚日韩视频| 亚洲精品网站在线播放gif| 国产日韩在线看片| 亚洲人成网站在线观看播放| 国产午夜精品全部视频播放| 亚洲人成小说网站色在线| 国产一区二区久久久| 亚洲人体一区| 影音先锋日韩资源| 亚洲午夜成aⅴ人片| 亚洲大胆美女视频| 午夜亚洲激情| 亚洲一区中文| 久久视频在线免费观看| 亚洲一区二区成人在线观看| 久久噜噜噜精品国产亚洲综合| 亚洲欧美日韩网| 欧美国产日韩xxxxx| 久久婷婷国产综合精品青草| 国产精品推荐精品| 一区二区三区久久网| 一区二区三区高清视频在线观看| 美女国内精品自产拍在线播放| 久久久久久久激情视频| 国产精品女主播| 日韩视频三区| 一区二区三区 在线观看视频| 免费一区二区三区| 欧美不卡视频一区| 1000部国产精品成人观看| 久久久99国产精品免费| 久久男女视频| 国产自产高清不卡| 久久久久一区二区三区| 久久精品一区二区| 黑丝一区二区三区| 久久精品一区二区三区四区| 久久嫩草精品久久久精品一| 国产欧美一区二区三区久久 | 欧美一区免费视频| 国产精品视频大全| 欧美亚洲网站| 麻豆精品精华液| 亚洲国产91| 欧美韩日精品| 一区二区三区欧美成人| 欧美一区二区三区四区视频| 国产日韩一区二区三区| 久久久久久香蕉网| 欧美激情一区二区三级高清视频 | 国产网站欧美日韩免费精品在线观看| 亚洲女人天堂av| 午夜精品久久久久久99热| 亚洲美女av网站| 狠狠色狠狠色综合日日tαg| 久久精品日产第一区二区三区| 另类图片综合电影| 亚洲国产美女| 欧美日韩视频一区二区| 亚洲免费在线视频| 久久一日本道色综合久久| 亚洲激情二区| 国产精品久久久久久久久久久久久久 | 欧美激情视频网站| 99av国产精品欲麻豆| 国产精品www.| 久久久www| 亚洲免费播放| 久久久无码精品亚洲日韩按摩| 亚洲国产精品久久久久秋霞蜜臀| 欧美巨乳在线| 久久xxxx精品视频| 亚洲人被黑人高潮完整版| 欧美一区二区三区四区在线 | 欧美久久综合| 欧美自拍偷拍| 日韩亚洲综合在线| 久久亚洲影院| 亚洲欧美日韩直播| 亚洲茄子视频| 国内精品模特av私拍在线观看| 欧美精品一卡二卡| 久久久精品性| 亚洲在线一区二区| 亚洲国产精品一区制服丝袜 | 欧美人与性动交α欧美精品济南到| 亚洲在线成人| 日韩午夜三级在线| 六月婷婷一区| 午夜天堂精品久久久久| 亚洲精品日韩激情在线电影| 国产亚洲欧美一区二区| 欧美日韩国产影片| 免费国产一区二区| 久久精品2019中文字幕| 亚洲天堂免费在线观看视频| 亚洲国产美女精品久久久久∴| 久久久久久电影| 香蕉久久一区二区不卡无毒影院| 一区二区冒白浆视频| 亚洲精品日韩综合观看成人91| 精品999网站|