/ / Читання каталогу та збереження вмісту файлів у новий файл у Perl - perl, файл, синтаксичний розбір

Читайте каталог і зберігайте вміст файлів у новий файл у Perl-Perl, файлі, розбору

Я хочу зберегти вміст деяких файлів у новий файл, і я роблю наступне:

use strict;
use warnings;
use HTML::TreeBuilder::XPath;

my ($dir) = @ARGV;
my @files = glob "details/*";
my $filename = "target.txt";

for my $file (@files) {
my $tree = HTML::TreeBuilder::XPath->new_from_file($file);
my @opacity = $tree->findnodes_as_strings("//div[@class="opacity description"]");
open my $fh, ">>", $filename;
print $fh for @opacity;
}

На жаль, це не спрацює. І я не розумію, чому?

Відповіді:

2 для відповіді № 1
  1. Перевірте повернене значення open:

    open my $fh ">>", $filename or die "Can"t open $filename: $!";
    

    Це може надати безцінне розуміння, коли “щось не працює”.

  2. Ваш синтаксис для print неоднозначно. Використовуйте print або say люблю

    print FILEHANDLE LIST
    print {EXPR} LIST     # EXPR has to produce a filehandle object
    print LIST            # prints to the `select`ed filehandle, usually STDOUT
    print                 # prints $_ by default
    

    Отже, ви хочете чітко вказати, що ви друкуєте, і, можливо, також додати новий рядок після кожного елемента в @opacity. Отже

    print {$fh} "$_n" for @opacity;
    

    або use feature "say" (perl 5.10 і вище):

    say {$fh} $_ for @opacity;