以下是引用copper在2005-6-15 23:16:01的发言:
感谢斑竹的回复!
问题已经解决,我用chomp 去掉的,好像还有其他办法!
不过,有个新的问题想请教!
我有点不明白 chop , chomp 它们用法的差异,
chop 能够去掉末尾的换行符或最后的一个字符
例如:
$filename = "/tmp/log.txt";
open ( FILE,"$filename");
while (<FILE>) {
push(@file,$_);
}
我需要将@file的内容插入到一个文本列表里面,在windows机上,显示的内容是ok的,
但是当我在linux 机上显示的时候,出现了行末的换行符,
而且是用十六进制的ASCII码表示 “\x9a”
请问如何除掉一个文本文件中的换行符呢?
你試試以下的語法.......
$filename = "/tmp/log.txt";
假設文件內容為:
#job_no 123ab-456a
#coupon 6
然後擷取出來:
open ( FILE,"$filename");
while (<FILE>) {
chomp;
if (/^#job_no/) {
$inputdata = (split (/\s+/))[1];
}
if (/^#coupon/) {
$inputdata1 = (split (/\s+/))[1];
}
}
print "$inputdata $inputdata1\n";
重點還是在於split.......
至於chop跟chomp的差別,據我所知
chop目前已較少人用了(perl4版本的產物),現在都用chomp
功能說明:
chop會將那一行的最後一個字元刪除,不管是否為空白都會刪除!!有可能會刪除到變數值, 這個很危險,不要用!!
chomp將那一行的最後換行字元或空白刪除,若無換行字元或空白就不刪除,這個比較人性化!!
[em05] |