$ARG
$_

默认输入和模式搜索空间。以下对等效

while (<>) {...}    # equivalent only in while!
while (defined($_ = <>)) {...}

/^Subject:/
$_ =~ /^Subject:/

tr/a-z/A-Z/
$_ =~ tr/a-z/A-Z/

chomp
chomp($_)

以下是在不使用 $_ 的情况下 Perl 将假定 $_ 的位置

  • 以下函数使用 $_ 作为默认参数

    abs、alarm、chomp、chop、chr、chroot、cos、defined、eval、evalbytes、exp、fc、glob、hex、int、lc、lcfirst、length、log、lstat、mkdir、oct、ord、pos、print、printf、quotemeta、readlink、readpipe、ref、require、reverse(仅在标量上下文中)、rmdir、say、sin、split(对于其第二个参数)、sqrt、stat、study、uc、ucfirst、unlink、unpack。

  • -t(默认为 STDIN)之外的所有文件测试(-f-d)。请参阅 perlfunc 中的“ -X”

  • 在不使用 =~ 运算符时使用的模式匹配操作 m//s///tr///(又名 y///)。

  • 如果没有提供其他变量,则在 foreach 循环中的默认迭代器变量。

  • grep()map() 函数中的隐式迭代器变量。

  • given() 的隐式变量。

  • <FH>readlinereaddireach 操作的结果作为 while 测试的唯一条件时,放置下一个值或输入记录的默认位置。在 while 测试之外,不会发生这种情况。

$_ 是一个全局变量。

然而,在 perl v5.10.0 和 v5.24.0 之间,可以通过编写 my $_ 来按词法使用它。然后可以使用 our $_ 使 $_ 引用同一作用域中的全局 $_。此实验功能已被删除,现在是一个致命错误,但您可能会在较旧的代码中遇到它。

助记符:在某些操作中理解下划线。