我正在写一个执行此操作的Perl脚本:
a
的值读取到z
。根据环境变量的值,生成类似于
的结果文件a - 1,2,3,4
b - a,b,c
c - $234.34,$123.12
keyword1 %a%
keyword2 %b%
keyword3 %c%
需要注意的是,所有声明必须在用法之前。
问题在于,例如我阅读a
,并生成结果文件
a - 1,2,3,4
keyword3 %c%
现在,当我阅读b
时,我需要结果文件看起来像这样
a - 1,2,3,4
b - a,b,c
keyword1 %a%
keyword2 %b%
我应该如何使用Perl执行此操作?
我能想到的一种方法是生成两个不同的文件 - 一个带有声明,另一个带有用法,然后在执行结束时连接文件的剧本。
有更好的方法吗?
答案 0 :(得分:5)
无需单独的文件。在两个不同的数组变量@declarations
和@usages
中累积声明和用法。在读完所有环境变量并确定两个数组的内容后,打印它们:
say for @declarations;
say for @usages;
您甚至可以省略第一个数组。一旦你弄清楚声明应该是什么,立即打印出来。您只需要累积用法,直到您知道不再有声明为止。
答案 1 :(得分:1)
use strict;
use warnings;
my @keys = sort keys %ENV;
print "$_ - $ENV{$_}\n" foreach @keys;
my $kwcnt = 1;
print "keyword${ \( $kwcnt++ ) } \%$_\%\n" foreach @keys;
我对键进行了一次排序,然后两次运行。