-O 是否只为“真正的用户”所拥有
-R 是否只有“真正的用户”可读
-S 是否为socket
-T 是否为文本文件
-W 是否只有"真正的用户"可写
-X 是否只有"真正的用户"可执行
注:“真正的用户”指登录时指定的userid,与当前进程用户ID相对,命令suid可以改变有效用户ID。例:
unless (open(INFILE, "infile")) {
die ("Input file infile cannot be opened.n");
}
if (-e "outfile") {
die ("Output file outfile already exists.n");
}
unless (open(OUTFILE, ">outfile")) {
die ("Output file outfile cannot be opened.n");
}
等价于
open(INFILE, "infile") && !(-e "outfile") &&
open(OUTFILE, ">outfile") || die("Cannot open filesn");
五、命令行参数的解释
象C一样,PERL也有存储命令行参数的数组@ARGV,可以用来分别处理各个命令行参数;与C不同的是,$ARGV[0]是第一个参数,而不是程序名本身。
$var = $ARGV[0]; # 第一个参数
$numargs = @ARGV; # 参数的个数
Perl中,操作符实际上是对数组@ARGV的隐含的引用,其工作原理为:
1、当PERL解释器第一次看到时,打开以$ARGV[0]为文件名的文件;
2、执行动作shift(@ARGV); 即把数组@ARGV的元素向前移动一个,其元素数量即减少了一个。
3、操作符读取在第一步打开的文件中的所有行。
4、读完后,解释器回到第一步重复。
例:
@ARGV = ("myfile1", "myfile2"); #实际上由命令行参数赋值
while ($line = ) {
print ($line);
}
将把文件myfile1和myfile2的内容打印出来。
函数的参数
&abc("a","b")
sub abc {
$first=$_[0];
$second=$_[1];
....
}
abc("a","b")
abc函数中有a,b两个参数
$_[0]的值就是a
$_[1]的值就是b
可以这样来加深理解
&abc("a","b")
sub abc {
$first=$_[0];
$second=$_[1];
print $first.$second;
}
$_[0]表示函数的第一个参数
$_[1]表示函数的第二个参数
以此类推.......
#!/usr/bin/perl
$sum1 = my_sum1(1,2);
$sum2 = my_sum2(1,2);
print "sum1 = $sum1 sum2 = $sum2";









