gpt4 book ai didi

perl - 有什么方法可以使变量像 $a 和 $b 关于严格?

转载 作者:行者123 更新时间:2023-12-04 16:23:58 24 4
gpt4 key购买 nike

根据迈克尔卡曼的评论,我决定重写这个问题。请注意,在此编辑之前出现了 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;

因此,关于 $a 的主要功能差异和 $b -- 即使 Perl “知道他们的名字” -- 是你在排序时最好知道这一点,或者使用 List::Util 中的一些函数.

只有当你使用 strict 时, $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$vskim 可见对于最紧凑的语法。我希望它可以简单地通过
use Hash::Helper qw<skim>;

我问这个问题不是为了知道如何对它施以魔法。我在下面的“答案”应该让你知道我知道的 Perl 足够危险。我在问是否有办法严格接受其他变量,或者什么是最干净的解决方案。答案很可能是否定的。如果是这样的话,它根本就不是很TIMTOWTDI。

最佳答案

其他人提到了如何“使用变量”和“我们的”——我只是想补充一点,$a 和 $b 是特殊情况,因为它们在内部由排序例程使用。这是来自 strict.pm 文档的注释:

Because of their special use by sort(), the variables $a and $b are 
exempted from this check.

关于perl - 有什么方法可以使变量像 $a 和 $b 关于严格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/150454/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com