Perl中的文件读写学习笔记

2019-10-01 10:23:20丽君

-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";