所以,我从来不知道这一点,我希望得到一些澄清.我知道你是否这样做
foreach (@list){
Run Code Online (Sandbox Code Playgroud)
如果在该循环中更改$ _,则会影响实际数据.但是,如果你这样做,我不知道
foreach my $var1 (@list){
Run Code Online (Sandbox Code Playgroud)
如果您在循环中更改了$ var1,它将更改实际数据.: - /那么,有没有办法循环@list但保持变量是只读副本,或者如果更改的副本不会更改@list中的值?
当我注意到语法检查结果警告无用的常量(1)时,我正在编写一个模块作为我的应用程序的一部分.这是为什么?
常量是1
模块末尾的强制性,通常会被警告忽略,如下所示perldoc perldiag
:
对于等于0或1的数值常量,不会发出此警告,因为它们通常用在类似的语句中
Run Code Online (Sandbox Code Playgroud)1 while sub_with_side_effects();
(可能有一个更好的来源.毕竟1
在文件的最后是完全需要的,不要被警告.)
但是,即使对于几乎空的模块,也会产生警告use bigint
.
package Foo;
use bigint;
1;
Run Code Online (Sandbox Code Playgroud)
对于这个简单的文件语法检查,会产生以下警告:
$> perl -Wc Foo.pm
Useless use of a constant (1) in void context at Foo.pm line 5.
Foo.pm syntax OK
Run Code Online (Sandbox Code Playgroud)
bigint
除了在sqlite中输入长十六进制数字之外,我找不到任何引用和警告消息,但我认为这并没有真正解决我的问题.
我的Perl是Cygwin的v5.14.4,bigint是0.36.
是否可以使用"括号"语法将代码块传递给子代码?
即我写的时候
List::MoreUtils::any { defined ($_) } (undef, undef, 1);
Run Code Online (Sandbox Code Playgroud)
有用.但是当我尝试添加括号时
List::MoreUtils::any ( { defined ($_) } , (undef, undef, 1) );
Run Code Online (Sandbox Code Playgroud)
这被解释为匿名哈希,给出错误消息.无论是逃避还是使用eval都无济于事.
所有大惊小怪的想法是如果调用是表达式的一部分,即
if (first_index { defined (${$_})} $jms_positions > $jms_positionals_seen )
Run Code Online (Sandbox Code Playgroud)
参数之后的某些运算符可能会在调用之前执行,从而产生不需要的结果.
我有以下方法接受变量,然后显示数据库中的信息:
sub showResult {
if (@_ == 2) {
my @results = dbGetResults($_[0]);
if (@results) {
foreach (@results) {
print "$count - $_[1] (ID: $_[0])\n";
}
} else {
print "\n\nNo results found";
}
}
}
Run Code Online (Sandbox Code Playgroud)
一切正常,除了foreach循环中的打印线.此$ _变量仍包含传递给方法的值.
无论如何要在$ _上"强制"新的值范围,还是它总是包含原始值?
如果有任何好的教程可以解释$ _的工作范围,那也很酷!
谢谢
我正在查看perl代码,我看到了这个:
sub html_filter {
my $text = shift;
for ($text) {
s/&/&/g;
s/</</g;
s/>/>/g;
s/"/"/g;
}
return $text;
}
Run Code Online (Sandbox Code Playgroud)
for循环在这种情况下做了什么,为什么你会这样做?
我在一本书中遇到过一段代码,如下所示:
#for (some_condition) {
#do something not particularly related to the question
$var = $anotherVar+1, next if #some other condition with $var
#}
Run Code Online (Sandbox Code Playgroud)
我不知道$anotherVar+1和next之前的逗号 (",") 是什么意思。这种语法结构是如何调用的,它甚至正确吗?