2016-02-01 3 views
0

У меня есть немного перевода, над которым я работал, от Perl до простого старого английского. Мне было интересно, правильно ли я перевел эту строку.Перевод этой строки кода?

open(FQ, $fqFile =~ /\.gz$/ ? "gunzip -c $fqFile |" : $fqFile) 
    || die"Cannot open the pipe to $fqFile\n"; 

Мой перевод:

#Open a file, $fqFile, by either unzipping it first or just opening it if already unzipped. 
+0

Я считаю, что 'gunzip -c' не изменяет исходный файл. – TLP

+1

Обратите внимание, что это прерывается, если имя файла содержит метасимволы оболочки – ysth

ответ

1

Вы совершенно правы. Если имя файла в $fqFile заканчивается на .gz, файл распаковывается (на стандартный вывод), а затем считывается как труба. Иначе имя файла берется как есть, и файл открывается обычным способом.

Сторона примечания: gunzip -c не меняет файл (на месте), он распаковывается в стандартный вывод. Таким образом, вызов open() с завершающим |. Он запускает заданное «имя файла» gunzip -c $fqFile как команду и считывает его вывод.

Смежные вопросы