我想从我将通过电子邮件进一步发送的文件中获取独特的元素(行)。我尝试了两种方法,但都不起作用:
第一种方式:
my @array = "/tmp/myfile.$device";
my %seen = ();
my $file = grep { ! $seen{ $_ }++ } @array;
第二种方式:
my $filename = "/tmp/myfile.$device";
cat $filename |sort | uniq > $file
我该怎么做?
我想从我将通过电子邮件进一步发送的文件中获取独特的元素(行)。我尝试了两种方法,但都不起作用:
第一种方式:
my @array = "/tmp/myfile.$device";
my %seen = ();
my $file = grep { ! $seen{ $_ }++ } @array;
第二种方式:
my $filename = "/tmp/myfile.$device";
cat $filename |sort | uniq > $file
我该怎么做?
您似乎忘记阅读文件了!
open(my $fh, '<', $file_name)
or die("Can't open \"$file_name\": $!\n");
my %seen;
my @unique = grep !$seen{$_}++, <$fh>;
您需要打开文件并阅读它。
"cat" 是一个 shell 命令而不是 perl
尝试这样的事情
my $F;
die $! if(!open($F,"/tmp/myfile.$device"));
my @array = <$F>;
my %seen = (); my $file = grep { ! $seen{ $_ }++ } @array;
如果文件未正确打开,die $!
将停止程序并显示错误;
@array=<$F>
将上面打开的文件中的所有数据读取$F
到数组中。
如果你装配参数列表,你可以让 Perl 自动打开文件,使用:
perl -n -e 'BEGIN{@ARGV=("/tmp/myfile.device");} print if $count{$_}++ == 0;'