作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 List::MoreUtils 方法。但是,在某些情况下需要清楚地了解它的用法。
如果它可以与 map 一起使用,请告诉我。例如:
#!/usr/bin/perl
use strict;
use warnings;
use List::Util;
use List::MoreUtils;
use Data::Dumper;
my @udData1 = qw(WILL SMITH TOMMY LEE JONES);
my @arr = qw(WILL TOMMY);
my %output = map{$_=>List::MoreUtils::firstidx{/$_/} @udData1} @arr;
print Dumper %output;
print List::MoreUtils::firstidx{/TOMMY/} @udData1;
print "\n";
输出:
$VAR1 = 'TOMMY';
$VAR2 = 0;
$VAR3 = 'WILL';
$VAR4 = 0;
2
据观察,我在使用 map 时没有正确获取值,但在后面的命令中使用时却没问题。我打算使用 $_ 作为 @arr 的一个元素。这可能是不正确的。所以,请给我一个替代方案。我必须使用 foreach 吗?
最佳答案
问题就在这里:
List::MoreUtils::firstidx{/$_/} @udData1
在这段代码中,您希望 $_
是从 @arr
中获取的模式和从 @udData1
同时。 (请记住,
firstidx{/TOMMY/}
表示 firstidx{$_ =~/TOMMY/}
,同样,firstidx{/$_/}
表示 firstidx{$_ =~/$_/}
。)
实际发生的是
$_
是来自 @udData1
的值(因为这是最内层的循环),您最终将其与自身进行匹配。因为它是一个简单的字母字符串,所以它总是匹配自身,并且 firstidx 正确返回 0。
这是一个使用临时词法变量的解决方案:
my %output = map{ my $p = $_;
$p => List::MoreUtils::firstidx{/$p/} @udData1 } @arr;
关于perl - 使用 List::MoreUtils::firstidx 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10845306/
我正在尝试使用 List::MoreUtils 方法。但是,在某些情况下需要清楚地了解它的用法。 如果它可以与 map 一起使用,请告诉我。例如: #!/usr/bin/perl use strict
我是一名优秀的程序员,十分优秀!