Если вы уверены, что файл с именем chicken.fa
существует, существует несколько возможностей.
Неправильный каталог. Как написано, ваш скрипт попытается найти файл chicken.fa
в том же каталоге, из которого вы запускаете скрипт Perl. Если файл фактически находится в другом каталоге, он не будет найден.
if (! -f 'chicken.fa') {
warn "'chicken.fa' doesn't exist in this directory!";
}
Даже если ваш сценарий perl и входной файл находятся в одном каталоге, Perl не найдет ваш файл , если вы не запустите скрипт perl из этого каталога . То есть это будет работать
cd /directory/where/the/stuff/is
perl the_script.pl
, но это не будет
cd /some/other/directory
perl /directory/where/the/stuff/is/the_script.pl
Разрешение. У вас могут не быть необходимых разрешений, в данном случае разрешения на чтение, чтобы открыть файл.
if (! -r 'chicken.fa') {
warn "Don't have read permission on 'chicken.fa' file!";
}
Неверная ссылка c ссылка. Возможно, chicken.fa
является символической c ссылкой на другое местоположение, и это местоположение не является допустимым файлом.
if (-l 'chicken.fa' && ! -f readlink('chicken.fa')) {
warn "'chicken.fa' is an invalid symbolic link";
}