我的输出数组合并成一个数组
my output array to merge into just one array
我的示例代码用于显示 source_dir_ref.txt 中列出的目录列表,但我需要将其合并到一个数组中
#! /usr/bin/env perl
use feature qw(say);
use strict;
use warnings;
use Data::Dumper;
use Getopt::Long;
my $infile = 'source_dir_ref.txt';
my $file = $ARGV[0];
GetOptions ("infile=s" => $file ) or die("Error in command line arguments\n");
open(DATA, $infile) or die "Couldn't open file $file";
while(my $line = <DATA>) {
chomp($line);
#say "$line";
my @listdir = $line;
say Dumper \@listdir;
}
我的结果 运行 我的代码
$VAR1 = [
'/archives/data/mefab/STAGING/PRODUCTION'
];
$VAR1 = [
'/archives/data/bkfb/STAGING/PRODUCTION'
];
$VAR1 = [
'/archives/data/szast/STAGING/PRODUCTION'
];
$VAR1 = [
'/archives/data/cpast/STAGING/PRODUCTION'
];
我的objective是把这个数组合并成一个数组。
@sourcedirs = ('/archives/data/mefab/STAGING/PRODUCTION', '/archives/data/bkfb/STAGING/PRODUCTION', '/archives/data/szast/STAGING/PRODUCTION','/archives/data/cpast/STAGING/PRODUCTION');
您可以在循环外创建数组并push(追加)新元素到它。
my @sourcedirs;
while (my $line = <DATA>) {
chomp($line);
push @sourcedirs, $line;
}
您还可以将文件句柄分配给一个数组,并在读取所有行后 chomp:
use strict;
use warnings;
open my $F, '<', $file or die "Cannot read $file: $!";
my @sorcedirs = <$F>;
close $F;
chomp(@sorcedirs);
print join ", ", @sorcedirs;
或者,使用 File::Slurp:
use File::Slurp;
my @sourcedirs = read_file($file);
你所要做的就是修复这一行。
my @listdir = $line;
到
push @listdir, $line;
然后在循环之后做chomp @listdir
.
更简单的方法是:
@listdir = <DATA>;
chomp @listdir;
谢谢。
我的示例代码用于显示 source_dir_ref.txt 中列出的目录列表,但我需要将其合并到一个数组中
#! /usr/bin/env perl
use feature qw(say);
use strict;
use warnings;
use Data::Dumper;
use Getopt::Long;
my $infile = 'source_dir_ref.txt';
my $file = $ARGV[0];
GetOptions ("infile=s" => $file ) or die("Error in command line arguments\n");
open(DATA, $infile) or die "Couldn't open file $file";
while(my $line = <DATA>) {
chomp($line);
#say "$line";
my @listdir = $line;
say Dumper \@listdir;
}
我的结果 运行 我的代码
$VAR1 = [
'/archives/data/mefab/STAGING/PRODUCTION'
];
$VAR1 = [
'/archives/data/bkfb/STAGING/PRODUCTION'
];
$VAR1 = [
'/archives/data/szast/STAGING/PRODUCTION'
];
$VAR1 = [
'/archives/data/cpast/STAGING/PRODUCTION'
];
我的objective是把这个数组合并成一个数组。
@sourcedirs = ('/archives/data/mefab/STAGING/PRODUCTION', '/archives/data/bkfb/STAGING/PRODUCTION', '/archives/data/szast/STAGING/PRODUCTION','/archives/data/cpast/STAGING/PRODUCTION');
您可以在循环外创建数组并push(追加)新元素到它。
my @sourcedirs;
while (my $line = <DATA>) {
chomp($line);
push @sourcedirs, $line;
}
您还可以将文件句柄分配给一个数组,并在读取所有行后 chomp:
use strict;
use warnings;
open my $F, '<', $file or die "Cannot read $file: $!";
my @sorcedirs = <$F>;
close $F;
chomp(@sorcedirs);
print join ", ", @sorcedirs;
或者,使用 File::Slurp:
use File::Slurp;
my @sourcedirs = read_file($file);
你所要做的就是修复这一行。
my @listdir = $line;
到
push @listdir, $line;
然后在循环之后做chomp @listdir
.
更简单的方法是:
@listdir = <DATA>;
chomp @listdir;
谢谢。