你好Perl专家,
我很抱歉,如果我问得太多,但刚开始学习perl,并希望了解更多有关散列到csv的信息 . 试着打破我的头几天,但没有得到太多 . 我的要求是我想转换下面的文件并将其打印为csv而不使用cpan中的自定义模块 . 由于此处不允许使用自定义模块 .
我尝试的逻辑是将输入文件转换为哈希并像csv一样打印 . 第一个问题我的代码有问题 . 我有一个复杂的部分,我需要在空格之前使用第一个关键字进行搜索,如果我没找到它,需要添加一个''(空格) . 例如 . ovpa_type不存在于第二个中 . 像这样,文件中有5L行 .
我想学习如何在哈希数组中添加行,就像powershell一样 . 并转换成我想要的csv .
My input file contains the below data.
begin node
name ccaita23.contoso.com
on_off on
group SYSTEM_PING_UNIX
suppress no
auto_delete yes
read_community public
write_community public
address 2.1.52.36
port 161
ovpa_type router
trace off
snmp_version 1
engineid 0
auth_protocol 1
is_key_ok 0
error_status 0
security_level 0
v3_user 0
priv_protocol 0
end node
begin node
name ccaidi7c.contoso.com
on_off on
group SYSTEM_PING_UNIX
suppress no
auto_delete yes
read_community public
write_community public
address 1.1.210.76
port 161
trace off
snmp_version 1
engineid 0
auth_protocol 1
is_key_ok 0
error_status 0
security_level 0
v3_user 0
priv_protocol 0
end node
Output required ccaita23.contoso.com,on,SYSTEM_PING_UNIX,no,yes,public,public,2.11.52.36,161,router,off,1,0,1,0,0,0,0,0 ccaidi7c.contoso.com,上SYSTEM_PING_UNIX,没有,是的,公共的,公开的,1.1.210.76,161,关闭,1,0,1,0,0,0,0,0
open FILE1, "File.node" or die;
my %hash;
while (my $line=<FILE1>) {
chomp($line);
(my $key,my $value) = split / /, $line;
$hash{$key} .= $value;
}
my $name = $hash{'name'};
my $group = $hash{'group'};
my $csv = "$name,$group\n";
print $csv;
1 回答