|
当某个文件句柄被打开进行输入时,可以像从STDIN 中输入一样。例如,读入Unix 中的密码文件:
if(! open PASSWD, “/etc/passwd”){
die “How did you get logged in?($!)”;
}
while(<PASSWD>){
chomp;
...
}
在本例中,die 后面的消息使用了$!。它被括号括起来了。如你所知的, “行输入操作(line-input operator)”由两部分组成;
尖括号(<>,真正的行输入操作(line-input operator))和尖括号中的文件句柄。
写出(>)或追加的(>>)的文件句柄,可以和print 或printf 结合使用,如:
print LOG “Captain’s log, stardate 3.14159\n”; #输出到LOG 中
printf STDERR “%D percent complete.\n”, $done/$total * 100;
注意到文件句柄和要打印的内容之间没有逗号了吗◆?如果使用括号,看起来会非常古怪。下面的两种写法都是正确的:
◆如果你英语或者语言学方面的成绩是A,当我们说这是“间接对象语法(indirect object syntax)”,你可能说:“是的,当然我知道文件句柄
后面为什么没有括号,因为它是一个间接对象(indirect object)”。我没有得到A,因此我不知道为什么这里不用逗号,但我们不关心它,
因为Larry 告诉我们这样做。
printf (STDERR “%d percent complete.\n”, $done/$total * 100);
printf STDERR (“%d percent complete.\n”, $done/$total * 100); |
|