sexevil 发表于 2015-12-28 15:30:51

Perl Note(2)

子程序中局部变量的定义有两种方法:my和local。其区别是:my定义的变量只在该子程序中存在;而local定义的变量不存在于主程序中,但存在于该子程序和该子程序调用的子程序中(在PERL4中没有my)。定义时可以给其赋值,如:
my($scalar) = 43;  local(@array) = (1, 2, 3);
  
  调用方法&my_sub(@array)将把数组@array的数据拷贝到子程序中的变量@_中,当数组很大时,将会花费较多的资源和时间,而用别名传递将不做这些工作,而对该数组直接操作。形式如:
  @myarray = (1, 2, 3, 4, 5);
  &my_sub(*myarray);
  sub my_sub {
  my (*subarray) = @_;
  }
  此方法类似于C语言中的传递数组的起始地址指针,但并不一样,在定义数组的别名之后,如果有同名的简单变量,则对该变量也是起作用的。
    .可用\nnn(8进制)或\xnn(16进制)来表示ASCII字符,如:
  $result = "\377"; # this is the character 255,or EOF
  $result = "\xff"; # this is also 255
  文件测试操作符
  操作符描述
  -b 是否为块设备
  -c 是否为字符设备
  -d 是否为目录
  -e 是否存在
  -f 是否为普通文件
  -g 是否设置了setgid位
  -k 是否设置了sticky位
  -l 是否为符号链接
  -o 是否拥有该文件
  -p 是否为管道
  -r 是否可读
  -s 是否非空
  -t 是否表示终端
  -u 是否设置了setuid位
  -w 是否可写
  -x 是否可执行
  -z 是否为空文件
  -A 距上次访问多长时间
  -B 是否为二进制文件
  -C 距上次访问文件的inode多长时间
  -M 距上次修改多长时间
  -O 是否只为“真正的用户”所拥有
  -R 是否只有“真正的用户”可读
  -S 是否为socket
  -T 是否为文本文件
  -W 是否只有"真正的用户"可写
  -X 是否只有"真正的用户"可执行
  注:“真正的用户”指登录时指定的userid,与当前进程用户ID相对,命令suid可以改变有效用户ID。
  

  格式值域含义
  @<<<左对齐输出
  @>>>右对齐输出
  @|||中对齐输出
  @##.##固定精度数字
  @*多行文本
  

  sub write_to_stdout {
  local ($savefile, $saveformat);
  $savefile = select(STDOUT);
  $saveformat = $~;
  $~ = "MYFORMAT";
  write;
  $~ = $saveformat;
  select($savefile);
  }
  printf值域
  域值含义
  %c单个字符
  %d十进制整数
  %e科学计数法形式的浮点数
  %f普通形式(定点)浮点数
  %g紧缩形式浮点数
  %o八进制整数
  %s字符串
  %u无符号整数
  %x十六进制整数
  指针
  取址符:\
  解址:$
  哈希表和数组引用元素:->($的另一种形式)
  文件句柄的引用:\*LOGHANDLE(用于传递参数)

  

  
  
页: [1]
查看完整版本: Perl Note(2)