#!/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
”。