將腳本從Windows機器移動到Unix系統後,我遇到了一個非常奇怪的問題。 我已經寫了看書子併成功用Perl 5.16.3測試它在Windows,但它不會在Unix下工作,用Perl 5.14.2哈希鍵中的問題
sub READIN
{
my (%tmp, $val, $key);
open (DAT, "$_[0]")or die "Thou shalt not open this file, so I generated an error: $! \n";
while (<DAT>)
{
chomp;
($val, $key) = split (/;/);
#print "Value -> $val - Key_for_Hash -> $key\n"; *#DBG - Works!*
$tmp{$key} = exists $tmp{$key}? "$val" : $val;
#print "ValueH -> $tmp{$key} - Key_for_HashH -> $key\n"; *#DBG - Works!*
#print "KeyH-> $key - ValueH -> $tmp{$key}\n"; *#DBG - doesn't work, cuts of everything before " - ValueH....."*
#print "Value2 -> $val - Key_for_Hash2 -> $key\n\n";*#DBG - Works!*
}
close DAT or die "Filehandle is grumpy today and dislikes your Idea to be closed as of $\n";
return %tmp;
}
輸出我的數據::自卸車IST得到這樣的:
$VAR1 = {
' => '18.15.7.1.39.',
' => '19.15.7.1.39.',
' => '19.15.9.1.6.1.',
' => '19.15.7.1.6.',
' => '19.15.1.',
' => '18.15.1.',
' => '18.15.7.1.36.',
' => '18.15.7.1.34.',
' => '18.15.7.1.1.',
' => '18.15.7.1.33.',
' => '18.1.9.0',
' => '19.15.7.1.36.',
' => '16.15.2.1.4.1',
' => '18.15.7.1.38.',
' => '19.15.9.1.13.',
' => '18.15.9.1.6.1.',
' => '16.1.9.0',
' => '19.15.7.1.33.',
' => '19.15.7.1.37.',
' => '19.1.9.0',
' => '19.15.9.1.3.',e
' => '19.15.7.1.4.',
' => '19.15.7.1.38.',
' => '19.15.7.1.34.',
'radioid2e' => '19.15.7.1.1.',
' => '16.15.2.1.4.1',
' => '19.15.7.1.35.',
' => '18.15.7.1.35.'
};
和最後一個,這是我從文件中讀取數據:
16.1.9.0;擺脫
16.15.2.1.4.1; KAP
16.15.2.1.4.1 ; mod
18.1.9.0; RID2
18.15.7.1.35; tdmkapt2
18.15.7.1.38; tdmkapr2
18.15.7.1.34; modt2
18.15.7.1.33; modr2
18.15 .9.1.6.1; tdmkap2
18.15.7.1.36; etht2
18.15.7.1.39; ethr2
18.15.1; RT2
18.15.7.1.1; radioid2
19.1.9.0 ; rid2e
19.15.7.1.35。; tdmkapt2e
19.15.7.1.38; tdmkapr2e
19.15.7.1.34; modt2e
19.15.7.1.33; modr2e
19.15.9.1.6.1; tdmkap2e
19.15.7.1.36; etht2e
19.15.7.1.39; ethr2e
19.15.1; rt2e
19.15.7.1.4; um2e
19.15.7.1.37; lm2e
19.15.9.1.3; glokapam2e
19.15 .9.1.13。; ethkapam2e
19.15.7.1.6。; acmcpm
19.15.7.1.1。; radioid2e
有人能指出我做錯了什麼嗎?或者這是5.14.6的一般問題?
//編輯:
這是數據::自卸車輸出,我會在Windows中獲得(Perl的5.16.3):
$VAR1 = {
'rid2e' => '19.1.9.0',
'rt2' => '18.15.1.',
'ethkapam2e' => '19.15.9.1.13.',
'etht2' => '18.15.7.1.36.',
'etht2e' => '19.15.7.1.36.',
'tdmkapt2e' => '19.15.7.1.35.',
'tdmkapr2' => '18.15.7.1.38.',
'tdmkapt2' => '18.15.7.1.35.',
'ethr2' => '18.15.7.1.39.',
'ethr2e' => '19.15.7.1.39.',
'tdmkap2e' => '19.15.9.1.6.1.',
'acmcpm' => '19.15.7.1.6.',
'rt2e' => '19.15.1.',
'modt2e' => '19.15.7.1.34.',
'modr2e' => '19.15.7.1.33.',
'um2e' => '19.15.7.1.4.',
'radioid2' => '18.15.7.1.1.',
'tdmkap2' => '18.15.9.1.6.1.',
'rid' => '16.1.9.0',
'modr2' => '18.15.7.1.33.',
'glokapam2e' => '19.15.9.1.3.',
'rid2' => '18.1.9.0',
'kap' => '16.15.2.1.4.1',
'tdmkapr2e' => '19.15.7.1.38.',
'radioid2e' => '19.15.7.1.1.',
'modt2' => '18.15.7.1.34.',
'mod' => '16.15.2.1.4.1',
'lm2e' => '19.15.7.1.37.'
};
你不期望輸出應該是什麼樣子,你能更好地解釋它嗎? –
我期待鍵的相應值也應該在輸出像這行''radioid2e'=> '19 .15.7.1.1。','只有不同的數據當然 – user2982931