Perl 为什么';t<&燃气轮机;设置$\但是(<;>;){}会设置吗? ; 印刷品$_

Perl 为什么';t<&燃气轮机;设置$\但是(<;>;){}会设置吗? ; 印刷品$_,perl,Perl,但这是可行的: <>; print $_ while(){ 打印美元; } 为什么第一个版本不起作用?Perlwhile()语句有一个隐式赋值给$\ucode>,这在您的第一个代码片段中缺失 这在以下章节中进行了描述: 如果且仅当输入符号是while语句的条件内的唯一内容(即使伪装为(;)循环的),则该值将自动分配给全局变量$,从而销毁以前存在的任何内容 Perlwhile()语句有一个隐式赋值给$\uUcode>,这在您的第一个代码段中丢失 这在以下章节中进行了描述: 如果且仅

但这是可行的:

<>;
print $_
while(){
打印美元;
}
为什么第一个版本不起作用?

Perl
while()
语句有一个隐式赋值给
$\ucode>,这在您的第一个代码片段中缺失

这在以下章节中进行了描述:

如果且仅当输入符号是
while
语句的条件内的唯一内容(即使伪装为(;)
循环的
),则该值将自动分配给全局变量$,从而销毁以前存在的任何内容

Perl
while()
语句有一个隐式赋值给
$\uUcode>,这在您的第一个代码段中丢失

这在以下章节中进行了描述:

如果且仅当输入符号是
while
语句的条件内的唯一内容(即使伪装为(;)
循环的
),则该值将自动分配给全局变量$,从而销毁以前存在的任何内容

因为
while()
while(已定义($\ux=module)的缩写

给定文件
example.pl

while(<>){
  print $_;
}
将打印

perl -MO=Deparse example.pl
使用警告;
使用严格的“refs”;
嗯,我相信这样做是为了阻止人们浪费时间

use warnings;
use strict 'refs';
<ARGV>;
while (defined($_ = <ARGV>)) {
    ();
}
example.pl syntax OK
(){ }
在void上下文中使用特殊的大小写是没有价值的,事实上,它可能是有害的,因为当你说
时,你经常试图从文件句柄中扔掉一行你不想要的内容。让
$\uuu
捕获它既没有效率,也没有必要。

因为
while()
while(已定义)的简写($\ux=模块

给定文件
example.pl

while(<>){
  print $_;
}
将打印

perl -MO=Deparse example.pl
使用警告;
使用严格的“refs”;
嗯,我相信这样做是为了阻止人们浪费时间

use warnings;
use strict 'refs';
<ARGV>;
while (defined($_ = <ARGV>)) {
    ();
}
example.pl syntax OK
(){ }

在void上下文中使用特殊的大小写是没有价值的,事实上,它可能是有害的,因为当你说
时,你经常试图从文件句柄中扔掉一行你不想要的内容。让
$\uu
捕获它既没有效率也没有必要。

因为第二行是一个特例,正如我所说的如果你写过:

for (<>) {
}
while(已定义($\u=)){
第一个不是特例。因为您没有存储
输入行的任何位置都没有保存。

因为第二行是一个特殊情况,就像您写的:

for (<>) {
}
while(已定义($\u=)){
第一个不是特例。因为您没有存储
输入行在任何地方都没有被保存。

-Mmodule=arg1,arg2
相当于
使用模块qw/arg1 arg2/;
,因此
-MO=Deparse
相当于
使用qw/Deparse/;
。该模块使加载多个后端模块(即
B:
命名空间中的模块)变得容易.
-Mmodule=arg1,arg2
相当于
使用模块qw/arg1 arg2/;
,因此
-MO=Deparse
相当于
使用qw/Deparse/;
。该模块可以轻松加载多个后端模块(即
B:
命名空间中的模块)。