sub main(int argc, char *argv[]) {
my $j = '@b(defgh|jk3m#9pqr$+uvwxy2';
for ( int $i = 0; $i < 32; ++$i ) {
print (grep {/\S/} split('\W|', $j))[$i % (split('', $j))[11] + $i % (split('',$j))[25] * $i % 19];
}
print "\n";
return 0;
}
main() unless caller;
我的错误在哪里?我无法找到它。但我知道它可能在for
循环中
答案 0 :(得分:6)
您正在尝试使用C构造编写perl。
strict
和warnings
来帮助您解决常见错误。int argc, char *argv[]
。int $i=0;$i<32;++$i
,你可以在perl中编写C风格的循环,但它不是非常有用。main unless caller
是一个奇怪的结构。如果您打算将其用作库,请不要调用您的函数main
,并阅读perldoc perlmod
。重写代码,我得到以下内容:
#!/usr/bin/env perl
use warnings;
use strict;
main();
sub main {
my $j = '@b(defgh|jk3m#9pqr$+uvwxy2';
for my $i ( 0 .. 31 ) {
my @characters = grep { /\S/ } split /\W|/, $j;
my ($first_mod) = (split//,$j)[11];
my $first_index = $i % $first_mod;
my ($second_mod) = (split//,$j)[25];
my $second_index = $i % $second_mod * $i % 19;
print $characters[ $first_index + $second_index ];
}
print "\n";
return 0;
}
<强>输出强>
beefdkb3emdrbuevd2bdeedjbke3dqbr
进一步阅读