免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1907 | 回复: 3
打印 上一主题 下一主题

perl 中*的语法是怎样的啊? 我查询了很多资料都找不到. 望指教~ [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-13 09:54 |只看该作者 |倒序浏览
比如下面代码中有很多*号. 具体的语法是怎样的?
  1. if ($^O eq 'os2') {
  2.     local $^W = 0;

  3.     *cwd                = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
  4.     *getcwd             = \&cwd;
  5.     *fastgetcwd         = \&cwd;
  6.     *fastcwd            = \&cwd;

  7.     *fast_abs_path      = \&sys_abspath if defined &sys_abspath;
  8.     *abs_path           = \&fast_abs_path;
  9.     *realpath           = \&fast_abs_path;
  10.     *fast_realpath      = \&fast_abs_path;

  11.     return 1;
  12. }
复制代码

论坛徽章:
0
2 [报告]
发表于 2006-08-13 10:27 |只看该作者
原帖由 rotknife 于 2006-8-13 09:54 发表
比如下面代码中有很多*号. 具体的语法是怎样的?
[code]if ($^O eq 'os2') {
    local $^W = 0;

    *cwd                = defined &sys_cwd ? \&sys_cwd : \&_os2_cwd;
    *getcwd         ...


*看你怎么用了,在regex里*表示0个或多个符合匹配条件。

在这里的*是Perl的一种魔术变量的用法,等同于定义一系列函数别名,以后你用&cwd的时候,就等同于访问了sys_cwd()函数。*cwd定义了一个glob。

论坛徽章:
0
3 [报告]
发表于 2006-08-13 11:37 |只看该作者
还是不清楚。能说详细点吗?  比如下面的例子: 这里的*怎么理解?  谢谢。

  1. $fh = *STDOUT;

  2. --------------

  3. $fh = \*STDOUT;

  4. --------------

  5. sub newopen {
  6.     my $path = shift;
  7.     local *FH;          # not my() nor our()
  8.     open(FH, $path) or return undef;
  9.     return *FH;         # not \*FH!
  10. }
  11. $fh = newopen('/etc/passwd');

  12. --------------

  13. *foo = *bar;

  14. --------------

  15. *foo = \$bar;

  16. --------------

  17. local *Here::blue = \$There::green;
复制代码

论坛徽章:
0
4 [报告]
发表于 2006-08-13 12:59 |只看该作者
STDOUT是Perl默认的标准输出的句柄,它始终在符号表里存在:

$ perl -le 'print "$_ -> $::{$_}" for keys %::' |grep STDOUT
STDOUT -> *main::STDOUT

对文件句柄而言,say STDOUT与say *STDOUT及say \*STDOUT都是一样的效果。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP