免费注册 查看新帖 |

Chinaunix

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

require的疑惑 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-11-13 11:11 |只看该作者 |倒序浏览
今天用到require
我把require理解成c中的include。
但具体用到pwd.pl文件时,我想看看在文件中同时命名chdir是什么后果。
试验结果显示main中的chdir失效。有人能说说这是为什么吗?

代码如下:

!/usr/bin/perl

use warnings;
use strict ;#"subs";

require "pwd.pl";
sub chdir {
        my$name=shift;
        print "your input is $name";

        }

&initpwd;
printf "the present workingdirectory is %s n",$ENV{PWD};
&chdir("../../");
printf "the present workingdirectory is %s n",$ENV{PWD};

__END__
sub chdir {
        $name=shift;
        print "you input is $namen";

        }


[ 本帖最后由 hironics 于 2009-11-13 11:14 编辑 ]

论坛徽章:
0
2 [报告]
发表于 2009-11-13 11:26 |只看该作者
我的理解是 在主文件中定义的那个chdir是在编译阶段被解析并加入到符号表中的。
而require是运行时行为, 会在之后才执行。 这样pwd.pl中的函数就会覆盖原有的同名函数。

论坛徽章:
0
3 [报告]
发表于 2009-11-13 18:42 |只看该作者
原帖由 DQP 于 2009-11-13 11:26 发表
我的理解是 在主文件中定义的那个chdir是在编译阶段被解析并加入到符号表中的。
而require是运行时行为, 会在之后才执行。 这样pwd.pl中的函数就会覆盖原有的同名函数。


正解。require在运行时执行,import进的符号会覆盖掉符号表里同名的。
另外,LZ不要重写Perl内部函数,要重写的话加上use subs ...
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP