perl创建名为"1"的无法解释的文件

1 sorting io perl file-io

我一直试图摆脱一个奇怪的错误几个小时,没有成功.我有一个子程序来排序文件.这是代码:

sub sort_file {
  $filename = @_;

  print @_;
  print $filename;

  open(SRTINFILE,"<$filename");
  @lines=<SRTINFILE>;
  close(SRTINFILE);

  open(SRTOUTFILE,">$filename");
  @sorted = sort { @aa=split(/ /,$a); @bb=split(/ /,$b); return ($aa[1] <=> $bb[1]); } @lines;
  print SRTOUTFILE @sorted;

  close(SRTOUTFILE);

}
Run Code Online (Sandbox Code Playgroud)

每次运行此函数时,perl都会创建一个名为"1"的文件.我不知道为什么.我是一个完整的perl菜鸟,我只是用它来快速和脏文本文件处理.有谁知道什么是错的?

ike*_*ami 10

标量上下文中的数组可以计算数组中元素的数量.如果将一个参数传递给函数,则以下内容分配1$filename.

$filename = @_;
Run Code Online (Sandbox Code Playgroud)

您需要以下任何一项:

$filename = $_[0];
$filename = shift;
($filename) = @_;
Run Code Online (Sandbox Code Playgroud)

此外,您希望将变量的范围限制为函数,因此您需要

my $filename = $_[0];
my $filename = shift;
my ($filename) = @_;
(my $filename) = @_;  # Exact same as previous.
Run Code Online (Sandbox Code Playgroud)