Suz*_*rts 1 arrays indexing perl
我有下面的代码
@ar1 = ('kaje','beje','ceje','danjo');
$m = 'kajes';
my($next) = grep $_ eq 'kaje',@ar1;
print("Position is $next\n");
print("Next is $ar1[$next+1]\n");
print("Array of c is $ar1[$m+3]\n");
print("Array at m is $ar1[$m]\n");
Run Code Online (Sandbox Code Playgroud)
看到的输出:
Position is kaje
Next is beje
Array of c is danjo
Array at m is kaje
Run Code Online (Sandbox Code Playgroud)
我想了解这是如何运作的。这里 $next 是匹配的字符串,我可以为给定的数组对该字符串进行索引。此外,在数组中找不到 $m,但我们将输出作为数组的第一个元素。
始终使用use strict; use warnings;. 它回答了你的问题。
在一个地方,您将字符串视为kaje数字。
在两个地方,您将字符串视为kajes数字。
由于这两个字符串不是数字,Perl 将使用零并发出警告。
换句话说,Next is beje只有“有效”是因为kaje恰好位于索引处0。我不知道为什么你相信最后两行在kajes数组中没有任何地方可以工作。
你要
# Find the index of the element with value `kaje`.
my ($i) = grep $ar1[$_] eq 'kaje', 0..$#ar1;
Run Code Online (Sandbox Code Playgroud)