6

perl中的@.变量是什么?

它似乎是一个特殊的、可写的全局变量,并且(令人惊讶的是)不会插入双引号字符串:

use strict;
use warnings;

                 # Under 5.8, 5.10, 5.12, 5.14, and 5.16,
                 # the following lines produce:

@. = (3, 2, 1);  # no error
print "@.\n";    # "@."
print @., "\n";  # "321"

eval 'my @.; 1'  # Can't use global @. in "my" at (eval 1)
  or die $@;     #  line 1, near "my @."

我不记得以前遇到过它,也没有在perlvarnor中看到它perldata

4

2 回答 2

6

perldoc perlvar状态:

Perl 变量名也可以是数字序列或单个标点符号或控制字符。这些名称都是为 Perl 的特殊用途而保留的;

以数字、控制字符或标点字符开头的 Perl 标识符不受包声明的影响,并且总是强制在package main; 它们也免于strict 'vars'错误。

您正在使用保留名称。您不应该期望能够依赖任何功能。

于 2012-06-22T19:01:40.300 回答
4

$.是最近文件句柄的当前行号(或记录号)。

@.没有特殊意义或用途


"@."不插值,但"@{.}"会。

@.保留供将来使用,不应使用

于 2012-06-22T18:52:21.647 回答