加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

如何在Perl中同时迭代多个列表?

发布时间:2020-12-15 21:39:13 所属栏目:大数据 来源:网络整理
导读:我需要创建一个文本文件(aptest.s),我可以用来读入另一个程序.我正在使用Perl,因为我有一个很大的列表可供使用.我的代码如下(它没有给出所需的输出 – 显示在代码和实际输出之后).任何帮助,将不胜感激. #!/usr/bin/perl -wchdir("D://projects//SW Model ODM
我需要创建一个文本文件(aptest.s),我可以用来读入另一个程序.我正在使用Perl,因为我有一个很大的列表可供使用.我的代码如下(它没有给出所需的输出 – 显示在代码和实际输出之后).任何帮助,将不胜感激.
#!/usr/bin/perl -w
chdir("D://projects//SW Model ODME");
@link = ("319-116264||319-118664","320-116380||320-116846","321-119118||321-119119","322-115298||322-119087");
@link1 = ("116264-319||118664-319","116380-320||116846-320","119118-321||119119-321","115298-322||119087-322");
open (FSAS,">>aptest.s");
foreach $link (@link) {
    foreach $link1 (@link1){
    print FSAS "other code n";
    print FSAS "PATHLOAD SELECTLINK=(Link=".$link."),VOL[2]=MW[1] n";
    print FSAS "PATHLOAD SELECTLINK=(Link=".$link1."),VOL[3]=MW[2] n";
    print FSAS "other code n";
}
}

实际产量:

other output
PATHLOAD SELECTLINK=(Link=319-116264||319-118664),VOL[2]=MW[1] 
PATHLOAD SELECTLINK=(Link=116264-319||118664-319),VOL[3]=MW[2] 
other output 

other output
PATHLOAD SELECTLINK=(Link=**319-116264||319-118664**),VOL[2]=MW[1] 
PATHLOAD SELECTLINK=(Link=**116380-320||116846-320**),VOL[3]=MW[2] 
other output

期望的输出

other output
PATHLOAD SELECTLINK=(Link=319-116264||319-118664),VOL[3]=MW[2] 
other output

other output
PATHLOAD SELECTLINK=(Link=**320-116380||320-116846**),VOL[3]=MW[2] 
other output

解决方法

请参阅 List::MoreUtils中的each_array:
#!/usr/bin/perl

use strict;
use warnings;

use List::MoreUtils qw( each_array );

my @x = qw( A B C D E F );
my @y = (10,11,12,13,14,15);

my $it = each_array( @x,@y );
while ( my ($x,$y) = $it->() ) {
    print "$x = $yn";
}
__END__

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读