根据迈克尔卡曼的评论,我决定重写这个问题。请注意,在此编辑之前出现了 11 条评论,并相信迈克尔的观察,即我没有以明确我在问什么的方式编写问题。
问题:通过简单地导入模块来伪造严格的特殊状态的标准或最干净的方法是什么?
$a
$b
首先是一些设置。以下作品:
#!/bin/perl
use strict;
print "\$a=$a\n";
print "\$b=$b\n";
如果我再添加一行:
print "\$c=$c\n";
我在编译时遇到错误,这意味着我的令人眼花缭乱的打印代码都无法运行。
如果我注释掉use strict;
它运行良好。在限制之外,$a
主要$b
的特殊之处在于sort
将两个值与这些名称进行比较。
my @reverse_order = sort { $b <=> $a } @unsorted;
因此,关于and的主要功能区别——即使 Perl“知道它们的名字”——是你最好在排序时知道这一点,或者使用List::Util中的一些函数。$a
$b
只有当您使用严格时,才会$a
以$b
全新的方式成为特殊变量。它们是 strict 唯一会通过而不抱怨它们没有被声明的变量。
:现在,我喜欢严格,但令我震惊的是,如果 TIMTOWDI(有不止一种方法可以做到)是 Perl 中的第 1 条规则,那么这不是很 TIMTOWDI。它这么说$a
并且$b
很特别,就是这样。如果你想使用变量,你不必声明$a
并且$b
是你的人。如果您想通过添加来获得三个变量$c
,那么突然之间就有了另一种方法可以做到这一点。
没关系,在操作哈希时$k
可能$v
更有意义:
my %starts_upper_1_to_25
= skim { $k =~ m/^\p{IsUpper}/ && ( 1 <= $v && $v <= 25 ) } %my_hash
;`
现在,我使用并且我喜欢严格。但我只想$k
并且对于最紧凑的语法$v
是可见的。skim
我希望它可以简单地通过
use Hash::Helper qw<skim>;
我问这个问题不是为了知道如何对它施以魔法。我在下面的“答案”应该让你知道我知道的 Perl 足够危险。我在问是否有办法严格接受其他变量,或者什么是最干净的解决方案。答案很可能是否定的。如果是这样的话,它根本就不是很TIMTOWTDI。