我想从文件中获取独特的元素(行),我将通过电子邮件进一步发送。 我尝试了两种方法,但两种方法都不起作用:
第一种方式:my @array = "/tmp/myfile.$device";
my %seen = ();
my $file = grep { ! $seen{ $_ }++ } @array;
第二种方式:
my $filename = "/tmp/myfile.$device";
cat $filename |sort | uniq > $file
我该怎么做?
答案 0 :(得分:4)
你好像忘了阅读文件了!
open(my $fh, '<', $file_name)
or die("Can't open \"$file_name\": $!\n");
my %seen;
my @unique = grep !$seen{$_}++, <$fh>;
答案 1 :(得分:1)
您需要打开文件并阅读。
“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
中的所有数据读入数组。
答案 2 :(得分:0)
如果你装备了参数列表,你可以使用以下命令使Perl自动打开文件:
perl -n -e 'BEGIN{@ARGV=("/tmp/myfile.device");} print if $count{$_}++ == 0;'