从变量获取输出

时间:2014-04-20 06:16:57

标签: perl perl-module

 use strict;
 use warnings;

 $manifest=read_file("release.ms1");
 print "$manifest\n";

 my @new=split('\.',$manifest);

 my %data=@new;

 print "$data('vcs version')";

release.ms1的内容

vcs.version:12312321
vcs.path:CiscoMain/IT/GIS/trunk

错误:

vcs.version:12312321

vcs.path:CiscoMain / IT / GIS /中继线

vcsversion:12312321

vcspath:CiscoMain / IT / GIS /中继线

./script.pl第33行的哈希分配中奇数个元素。

在./script.pl第35行打印时使用未初始化的值。

我需要输出:

version=12312321
path=CiscoMain/IT/GIS/trunk

1 个答案:

答案 0 :(得分:1)

您的split功能正在分配:

$new[0] = 'vcs'
$new[1] = 'version:12312321\nvcs'
$new[2] = 'path:CiscoMain/IT/GIS/trunk'

当您为散列分配列表时,它必须具有偶数个元素,因为它们需要是交替的键和值。

看起来你真正想做的就是在换行符和冒号上拆分$manifest,并用空格替换键中的点。

my @new = split(/[.\n]/, @manifest;
my %data;
for (my $i = 0; $i < @new; $i += 2) {
    my $key = $new[$i];
    $key =~ s/\./ /g;
    $data{$key} = $new[$i+1];
}

最后,您访问哈希元素的语法是错误的。它应该是:

print $data{'vcs version'};

哈希键用大括号括起来,而不是圆括号。