在開始的時候我只是用下面的計算每條線的長度:試圖指望在Perl在一條線上charcters和失敗
while(<FH>){
chomp;
$length=length($_);
}
但是當我比較結果我生產的一個了通過Linux命令WC,我發現了一個問題: 在我的文件中的所有選項卡字符被視爲在Perl 1 character
長的,而它是8
爲wc
,所以我做了以下修改:
對於上面的代碼,它現在適用於所有大多數情況,除了一個以外,在wc
中並非所有選項卡都被計數,但只有那些沒有被某些字符佔用的選項,例如,如果在一行的開始,我輸入1234
,然後按一個選項卡,在wc
它不算作一個選項卡,但上面的代碼計算,有沒有什麼辦法可以採取解決這個問題?由於
解決它,使用tab expansion,這裏是代碼:
1 while $string =~ s/\t+/' ' x (length($&) * 8 - length($`) % 8)/e;
$length=length($string);
,如果任何人都可以給它一個解釋,那將是真棒,我測試了它可以工作,但是不太瞭解它。無論如何,感謝所有的幫助
所以,我絕對沒有辦法,我可以在Perl中解決這個問題? – user685275 2011-04-30 21:30:05
我確定有,你可以在Perl中做任何事:)如果你不能從Perl調用wc,那麼希望有人會爲你發佈另一個解決方案 – 2011-04-30 21:32:54
'wc -l'會計算行數,'wc - m'會計算字符的數量。 – shawnhcorey 2011-05-01 13:13:11