我有一个包含以下信息的文件:
TAG1 "file1.txt"
一些额外的行
TAG2 "file2.txt"
更多行
TAG3 "file3.txt".
现在,我想阅读双引号内的内容并将其分配给变量(类似于$var1 = file1.txt
$var2 = file2.txt
$var3 = fil3.txt)
。有人可以告诉我如何执行此操作。?< / p>
答案 0 :(得分:0)
您可以通过
实现目标使用正则表达式
my @files;
while (my $line = <>) {
if (m/"([^"]+)"/) {
push @files, $1;
}
}
使用split()
my @files;
while (my $line = <>) {
my (undef, $file, undef) = split /"/, $line, 3;
push @files, $file;
}
答案 1 :(得分:0)
除了"file3.txt".
之后的时间段(我怀疑是发布问题的工件),您的数据似乎是带有标签的CSV文件。
如果是这种情况,我建议您使用Text::CSV
use strict;
use warnings;
use autodie;
use Text::CSV;
my $csv = Text::CSV->new ( { sep_char => "\t" } )
or die "Cannot use CSV: ".Text::CSV->error_diag ();
my @files;
open my $fh, '<', 'file.csv';
while ( my $row = $csv->getline( $fh ) ) {
push @files; $row->[1];
}
$csv->eof or $csv->error_diag();
close $fh;
print "@files";