Joe*_*ton 2 arrays syntax perl conditional loops
所以我开始说我对Perl不太熟悉.我有一个项目,我已经完成了工作,需要相当多的Perl工作.大部分都是有道理的,但我坚持一个非常简单的问题.
我为了示例目的简化了我的代码.如果我可以让它工作,我可以编写项目的其余部分没问题,但由于某种原因,我似乎无法得到像以下一样简单的东西为我工作:
#!/usr/local/bin/perl
@names = ('Harry','Larry','Moe');
foreach $name (@names){
if($name == 'Harry'){
print $name;
}
}
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏!
编辑:fyi以上输出如下:
HarryLarryMoe
Run Code Online (Sandbox Code Playgroud)
小智 11
Perl中的字符串比较不是用,==而是用eq.在对它们进行操作之前,Perl不会考虑与13字符串不同的整数'13'.不以任何明显方式(例如'Harry')表示数字的字符串值被强制为零的数值.因此,$name=='Harry'将永远持有,但$name eq 'Harry'不会.
请查看perldoc perlop更多信息.
编辑添加: 如果您启用了warnings编译指示,那么解释器会指出这一点.事实上,它是总是一个好主意,use strict并use warnings在几乎你写任何Perl代码.特别是,这段代码(从命令行通过一行执行perl -e):
use strict;
use warnings;
my @names=("Harry","Larry","Moe");
foreach my $name(@names)
{
if($name=="Harry")
{
print "$name\n";
}
}
Run Code Online (Sandbox Code Playgroud)
产生输出
Argument "Harry" isn't numeric in numeric eq (==) at -e line 7.
Argument "Harry" isn't numeric in numeric eq (==) at -e line 7.
Harry
Argument "Larry" isn't numeric in numeric eq (==) at -e line 7.
Larry
Argument "Moe" isn't numeric in numeric eq (==) at -e line 7.
Moe
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1211 次 |
| 最近记录: |