2013-04-19 1 views
0

Вот код:Я использую mkdir в Perl. Это делает dir, но иногда он добавляет? к концу имени каталога

foreach my $name (@unique_gene_list) { 
    print "$name\n"; 
    chomp $name; 

    unless(mkdir $name, 0700) { 
     die "Unable to create directory called $name\n"; 
    } 
}  

Это работает, в основном. По какой-то причине одному из моих каталогов присваивается имя, которое заканчивается символом?. Следует отметить, что имя каталога, отображаемое в окне терминала, показывает знак вопроса. В finder нет знака вопроса в конце имени этого каталога. Я использую Perl v.5.12.3, на MAc OS 10.7.5.

+0

Попробуйте напечатать 'ord' от последнего символа имени:' печати Ord SubStr $ имя, -1' – choroba

+1

Также вы можете попытаться передать его, хотя кошка: 'Ls -l | cat -vet'. -vet печатает почти все странные символы, которые в противном случае невидимы – DVK

+0

Не понимаю, @choroba. ? Вы имеете в виду, что результат будет диагностическим? Я попробую. – ES55

ответ

2

Файл, из которого вы читаете, имеет строки, заканчивающиеся на CRLF. Вы удаляете LF с chomp, но CR (представленный^M) не удаляется. Вместо chomp; используйте s/\s+\z//;.

while (<$fh>) { 
    s/\s+\z//; 
    ... 
} 
Смежные вопросы