我遇到了一個我無法理解的奇怪問題:Perl在打印後的製表符後添加了一個空格。數據正在從協作者提供給我的製表符分隔的文件中讀取。該數據被讀取和處理由下面的代碼:Perl - 插入不需要的空白字符
my $file = shift @ARGV;
my @g;
open (FILE, $file);
while (<FILE>) {
my $line = $_;
chomp $line;
my @fields = split("\t", $line);
push(@g, $fields[2]);
push(@g, $fields[5]);
push(@g, $fields[7]);
...
}
我首先想到的是,我會在我的變量開始有一個隱藏的空白字符,所以我試圖用正則表達式去除的幾種方法沒有明顯的影響。以下代碼段所不欲以同樣的方式不管是如何修改的時@g的內容起作用的代碼:
# DEBUGGING
foreach (@g) { print "$_"; }
exit;
其中印刷:
catdoghatchairpen
但正常的代碼:
# PRINT HEADER
print "Sample ID";
foreach(@g) { print "\t$_";}
print "\n";
印刷:
cat*\t* dog*\t* hat*\t* chair*\t* pen
帶有製表符後跟每個單詞之間的空格字符。
任何想法爲什麼會發生這種情況或如何解決它?
請填寫完整的工作實例。 – Sean
我在單詞之間看到5個空格,但它可能是SO將標籤翻譯爲4個空格,如果您有額外空間,則會給出5個空格。 – sln
我會打印單引號的數據,即。 'print''\ t'$ _'「' – sln