![Perlスクリプトの指示[閉じる]](https://linux33.com/image/44860/Perl%E3%82%B9%E3%82%AF%E3%83%AA%E3%83%97%E3%83%88%E3%81%AE%E6%8C%87%E7%A4%BA%5B%E9%96%89%E3%81%98%E3%82%8B%5D.png)
#!/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
)の変数を設定すると、subshowstatの下の行を印刷するときには機能しないはずです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
」ことを意味します。