我怎么可以遍历多个列表在Perl的同一时间? [英] How can I iterate over multiple lists at the same time in Perl?
本文介绍了我怎么可以遍历多个列表在Perl的同一时间?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要创建一个文本文件中的(aptest.s)的伊灿用来读取到另一个程序。我使用Perl,因为我有一个大名单,从工作。我的code是如下(不得到所需要的输出 - 后code和实际输出所示)。任何帮助将是AP preciated。
#!的/ usr / bin中/ perl的-w
CHDIR(D:// //项目模型SW 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\");
开(FSAS,>> aptest.s);
的foreach $链接(@link){
的foreach $ LINK1(@链接1){
打印FSAS等code \\ N的;
打印FSASPATHLOAD SELECTLINK =(链接=$连结。。),VOL [2] = MW [1] \\ N的;
打印FSASPATHLOAD SELECTLINK =(链接=$ LINK1。),VOL [3] = MW [2] \\ N的;
打印FSAS等code \\ N的;
}
}
实际输出
其他输出
PATHLOAD SELECTLINK =(链接= 319-116264 || 319-118664),VOL [2] = MW [1]
PATHLOAD SELECTLINK =(链接= 116264-319 || 118664-319),VOL [3] = MW [2]
其他输出其他输出
PATHLOAD SELECTLINK =(链接= ** 319-116264 || 319-118664 **),VOL [2] = MW [1]
PATHLOAD SELECTLINK =(链接= ** 116380-320 || 116846-320 **),VOL [3] = MW [2]
其他输出
所需的输出
其他输出
PATHLOAD SELECTLINK =(链接= 319-116264 || 319-118664),VOL [2] = MW [1]
PATHLOAD SELECTLINK =(链接= 116264-319 || 118664-319),VOL [3] = MW [2]
其他输出其他输出
PATHLOAD SELECTLINK =(链接= ** 320-116380 || 320-116846 **),VOL [2] = MW [1]
PATHLOAD SELECTLINK =(链接= ** 116380-320 || 116846-320 **),VOL [3] = MW [2]
其他输出
解决方案
请参阅 each_array
中的列表:: MoreUtils 的:
#!的/ usr / bin中/ perl的使用严格的;
使用警告;使用List :: MoreUtils QW(each_array);我@x = QW(A B C D E F);
我的@y =(10,11,12,13,14,15);我的$ IT = each_array(@x,@y);
而(我($ X,$ Y)= $ IT->()){
打印$ X = $ Y \\ N的;
}
__结束__
I need to create a text file (aptest.s) that Ican use to read into another program. I am using Perl because I have a large list to work from. My code is as follows (which does not give the desired output - shown after code and actual output). Any help would be appreciated.
#!/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";
}
}
Actual Output :
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
Desired Output
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=**320-116380||320-116846**), VOL[2]=MW[1]
PATHLOAD SELECTLINK=(Link=**116380-320||116846-320**), VOL[3]=MW[2]
other output
解决方案
See each_array
in List::MoreUtils:
#!/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 = $y\n";
}
__END__
这篇关于我怎么可以遍历多个列表在Perl的同一时间?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文