#!/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
"를 의미합니다.