Perl如何解析未引用的裸词?

问题描述 投票:3回答:1

[未引用的单词在Perl中似乎有很多含义。

print STDERR $msg;

$hash{key}

func( param => $arg )

my $x = str;

如何确定这些含义?

perl parsing
1个回答
5
投票

解析标识符(按优先级降序):

  1. 在语法上预期的含义,在语法上。

    sub foo { }     # «foo» («sub» is covered later)
    $foo
    //i
    
  2. 字符串文字,后接=>或整个哈希索引表达式。

    my %h = ( a => 1 );
    $h{a}
    
  3. 关键字。

    while (1) { }
    sub { }
    
  4. 对先前导入的子程序的子调用。

    use Time::HiRes qw( time );
    time
    
  5. 调用命名列表运算符,命名一元运算符或命名空运算符。

    print $x, $y, $z;
    $c = chr $i;
    $t = time;
    
  6. 对先前声明的子项的子调用。

    sub foo { }
    foo
    
    sub bar;
    bar
    
    use constant FOO => 123;
    FOO
    
  7. Glob,用作期望文件句柄的运算符的操作数。

    open(FH, '>', $qfn) or die $!;
    print FH "Hello, World!\n";
    
  8. String文字,当用作带有*原型的sub参数的参数时。

    sub myprint(*@);
    myprint(FH, "Hello, World\n");
    
  9. 最后,它被视为字符串文字。这些被称为“流行词”,use strict qw( subs );不允许使用。

希望我没有错过。

当前丢失

  • ClassClass->method中的[method Class
  • funcname中的[sort funcname
  • -foo
  • ${foo}

感谢@mosvy和@Grinnz!两者都发现了我错过的一些案例。

© www.soinside.com 2019 - 2024. All rights reserved.