我的名字是abbi
我的第一个perl脚本在linux机器上运行
此脚本读取名为(input)的INI文件并打印val,param,name .....的值。
如何创建打印val1-valn OR循环值的循环来打印param1-paramn等的值? (在脚本中使用打印命令)
n - 是每个参数的最后一个数字
#!/usr/bin/perl
open(IN,"input") or die "Couldn't open input: $!\n";
while(<IN>) {
chomp;
/^([^=]+)=(.*)$/;
$config{$1} = $2;
}
close(IN);
print $config{val1};
print $config{val2};
print $config{val3};
print $config{param1};
print $config{param2};
print $config{param3};
print $config{name1};
.
.
.
.
来自linux机器的ini文件的例子
猫输入
val1=1
val2=2
val3=3
param1=a
param2=b
param3=c
name1=abbi
name2=diana
name3=elena
答案 0 :(得分:2)
您可以使用Config::Tiny来阅读.ini文件。 然后,您可以使用返回的哈希来过滤您想要的内容。
答案 1 :(得分:1)
根据您的上一条评论,这将做您想做的事:
use strict;
use warnings;
my %config;
my $max_n = 0;
my $input = 'input';
open my $in, '<', $input
or die "unable to open '$input' for reading: $!";
while (<$in>) {
chomp;
if (/^(.*?(\d+))\s*=(.*)$/) {
$config{$1} = $3;
$max_n = $2 if $2 > $max_n;
}
}
close $in or die "unable to close '$input': $!";
for my $n(1..$max_n) {
for my $param (qw/val param/) {
print "$param.$n = $config{$param.$n}\n" if exists $config{$param.$n};
}
}
答案 2 :(得分:0)
这个怎么样:
use warnings;
use strict;
my %config;
open my $input, "<", "input"
or die "Couldn't open input: $!\n";
while(<$input>) {
chomp;
if ( /^([^=]+)=(.*)$/) {
$config{$1} = $2;
}
}
close($input) or die $!;
for (sort keys %config) {
if (/param\d+/) {
print "$config{$_}\n";
}
}