我需要创建一个文本文件(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 = $y\n"; } __END__