Perl:在子声明的arg列表中,\ $是什么意思?

时间:2013-04-20 04:29:38

标签: perl

这是由s2p生成的程序的一部分,该程序构建执行特定sed命令的perl脚本。

# getsARGV: Read another input line into argument (default: $_).
#           Move on to next input file, and reset EOF flag $isEOF.
sub getsARGV(;\$){
    my $argref = @_ ? shift() : \$_;
    while( $isEOF || ! defined( $$argref = <ARG> ) ){
        close( ARG );
        return 0 unless @ARGV;
        my $file = shift( @ARGV );
        open( ARG, "<$file" )
        || die( "$0: can't open $file for reading ($!)\n" );
        $isEOF = 0;
    }
    1;
}

我在perlsub上找不到任何解释此子签名的内容。

代码也能很好地工作。

1 个答案:

答案 0 :(得分:2)

这是一个prototype。该特定原型迫使解析器仅接受用法

getsARGV()

getsARGV($SCALAR)

并将它们编译为

&getsARGV()

&getsARGV(\$SCALAR)