Я новичок в создании сценариев, и я пытаюсь объединить несколько файлов, пути которых перечислены в текстовом файле и выводятся комбинированный файл gzip. , например, файл списка - File_list.txt содержит эти файловые путиОбъединить несколько файлов, перечисленных в текстовом файле, используя perl Script
/data/path/file1.txt
data2/path2/file2.txt
....file3.txt
....file4.txt
Пока мой код для всех файлов, перечисленных в локальном каталоге (выводит только объединенный файл не архивированная):
#!/usr/bin/perl
use strict;
use File::Slurp;
my $directory = 'Users/xyz/Documents/';
opendir(dir, $directory) or die $!;
my @files = readdir(dir);
closedir dir;
my $outfilename = 'Combined.fastq'
my $outfilesrc = undef;
foreach (sort @files){
$outfilesrc.= File::Slurp::slurp("$basedir/$_");
}
open(OUT, "> $basedir/$outfilename") or die ("Can't open for writing:
$basedir/$outfilename : $!");
print OUT $outfilesrc;
close OUT;
exit;
Может кто-нибудь, пожалуйста, поделитесь, как читать файлы, используя этот список, а не одну директорию? Я знаю, что это намного проще в простой bash, но я пытаюсь создать модуль для конвейера, так что это нужно в Perl. Спасибо!
Попробуйте прочитать список в массиве '@ files'. См. [Правильный способ чтения файла данных в массив] (http://stackoverflow.com/questions/8963400/the-correct-way-to-read-a-data-file-into-an-array) –
*** «Я знаю, что это намного проще в простой bash» *** Это справедливо только тогда, когда «простой bash» - это единственный язык, который вам хорошо известен – Borodin
@Borodin На самом деле вам не нужно «хорошо знать» bash scripting: cat \ 'cat file_list \' >> new_file проще, чем этот скрипт perl – ChatterOne