Perl 脚本说明

Perl 脚本说明
#!/usr/bin/perl -w
use strict;

my $args;
$args=@ARGV;

if ($args<1)
{
    die("Expecting a filename");
}
sub showstat
{

    print " $_[0] dev, device number of filesystem\n";
      print " $_[1] ino,      inode number\n";
      print " $_[2] mode,     file mode  (type and permissions)\n";
      print " $_[3] nlink,    number of (hard) links to the file\n";
}

my $filename=$ARGV[0];
if (open (TESTFILE,$filename))
{
    my @filedata= stat(TESTFILE);

    &showstat(@filedata);
    close (TESTFILE);
}
else
{
    print "error on open $filename";

}

$args我的问题是,如果我们为数组()设置一个变量( @ARGV),当我们打印子showstat下的行时,不应该吗print"$args[0] ..." print "$args[1]"?而对于$filename=$ARGV[0],不应该是吗$filename=$args[1]

在 if 语句条件下,它说&showstat(filedata),是什么&意思?当我查到它时,它的意思是“一部分”,但我对所写的这行感到困惑。

答案1

$args我的问题是,如果我们为数组()设置一个变量( @ARGV),当我们在 sub 下打印该行时showstat,不应该吗 print"$args[0] ..." print "$args[1]"

它不应该也不应该是$args[0]因为在 Perl 中传递给子例程的参数存储在@_数组中。如果你想获取第一个参数的值,你必须使用$_[0]

而对于$filename=$ARGV[0],不应该是这样吗$filename=$args[1]

什么是$filename?如果是脚本名称,则必须使用$0代替$ARGV[0]$ARGV[0]是传递给脚本的第一个参数。

在 if 语句条件下,它说&showstat(filedata),是什么&意思?

它只是意味着“调用子程序showstat”。

相关内容