perl的包含文件 require ("myfile.pl");
基本的包含文件全过程
[macg@localhost perltest]$ vi file1.pl
#!/usr/bin/perl
sub gotest{ my(@tmp)=@_;
open (MYFILE,$tmp[0]) || die ("Could not open file"); my($line,$newline); while ($line=<MYFILE>) { $line=~ tr/a-zA-Z//s; print "good n"; print "$line is :$line"; print "$&; is : $&","n"; }
close(MYFILE); }
|
[macg@localhost perltest]$ vi tip.pl #!/usr/bin/perl
require ("file1.pl");
$file="/home/macg/perltest/gogo"; &gotest($file);
@arrary=qw(a b cc dd); $pointer = @arrary; for($i=0;$i<4;$i++) { print "$i : $pointer->[$i] n"; }
|
[macg@localhost perltest]$ ./tip.pl file1.pl did not return a true value at ./tip.pl line 3.
|
上面哪里错了? 包含文件,必须return一个1
}
close(MYFILE); }
1;
|
[macg@localhost perltest]$ ./tip.pl good $line is :I WANTWANT TO go to NY. And I also wWant to be DC.
|
require; 不指定文件名 变量$_的值即作为文件名传递给require
require("testdir/file1.pl"); 允许带路径名
#!/usr/bin/perl
require ("testdir/file1.pl");
$file="/home/macg/perltest/gogo"; &gotest($file);
|
[macg@localhost perltest]$ ls -F file1.pl gogo newdir/ newtest test testdir/ tip.pl* [macg@localhost perltest]$ ls testdir file1.pl test1
[macg@localhost perltest]$ ./tip.pl good $line is :I WANTWANT TO go to NY. And I also wWant to be DC
|
不用全路径名,而require文件又不在当前路径下,怎么办? ----@INC
[macg@localhost perltest]$ vi tip.pl
#!/usr/bin/perl
require ("file1.pl");
$file="/home/macg/perltest/gogo"; &gotest($file);
|
[macg@localhost perltest]$ ./tip.pl Can't locate file1.pl in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.6/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi at ./tip.pl line 3.
|
把file1.pl所在目录放入@INC系统变量中
[macg@localhost perltest]$ vi tip.pl #!/usr/bin/perl
unshift (@INC,"/home/macg/perltest/testdir"); require ("file1.pl");
$file="/home/macg/perltest/gogo"; &gotest($file);
|
[macg@localhost perltest]$ ./tip.pl good $line is :I WANTWANT TO go to NY. And I also wWant to be DC
|
@INC
[macg@localhost perltest]$ vi tip.pl
@arraytest=qq(hello "test" world); #!/usr/bin/perl foreach (@INC) { print $_,"n"; }
|
[macg@localhost perltest]$ ./tip.pl /usr/lib/perl5/site_perl/5.8.6 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.6/i386-linux-thread-multi /usr/lib/perl5/5.8.6
|
修改@INC
[macg@localhost perltest]$ vi tip.pl
#!/usr/bin/perl $path1="/home/macg"; $path2="/home/macg/www"; push(@INC,$path1);放尾部 unshift(@INC,$path2); 放头部 foreach (@INC) { print $_,"n"; }
|
[macg@localhost perltest]$ ./tip.pl /home/macg/www /usr/lib/perl5/vendor_perl/5.8.6 /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl /usr/lib/perl5/5.8.6 . /home/macg
|
push 或unshift @INC只对当前文件执行时刻有效,没有global效果
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|