Perl--包

来源:互联网 发布:婚礼布置设计软件 编辑:程序博客网 时间:2024/04/30 12:23
在 Perl 里,一个名字空间叫一个包。构造含义$days 简单标量值 $days$days[28] 数组 @days 的第二十九个元素$days{'Feb'} 散列 %days 的“Feb”值构造含义${days} 和 $days 一样,不过在字母数字前面不易混淆$Dog::days 在 Dog 包里面的不同的 $days 变量$#days 数组 @days 的最后一个索引$days->[28] $days一个引用指向的数组的第二十九个元素$days[0][2] 多维数组$days{200}{'Feb'} 多维散列$days{2000,'Feb'} 多维散列枚举Perl 里的符号表也被称为包(package),因此这些变量常被称为包变量任何提到 $Dog::bert 的程序都是获取位于 Dog:: 包的变量 $bertmain默认的包名,没有单独的文件包定义:名字空间namespace:使代码段不发生冲突而用以分开代码的空间。把变量和函数分为不同区间的标记,不同空间中的变量或函数可以同名。使用变量要带上名空间的前缀$name::a包定义 package mypack;得到main包所有的变量名:[oracle@jhoa 2]$ cat 1.pl foreach $key (keys %main::){print "\$$key => $main::{$key}\n";}[oracle@jhoa 2]$ perl 1.pl $/ => *main::/$stderr => *main::stderr$key => *main::key$utf8:: => *main::utf8::$" => *main::"$CORE:: => *main::CORE::$DynaLoader:: => *main::DynaLoader::$stdout => *main::stdout$attributes:: => *main::attributes::$ => *main::$stdin => *main::stdin$ARGV => *main::ARGV$INC => *main::INC$ENV => *main::ENV$Regexp:: => *main::Regexp::$UNIVERSAL:: => *main::UNIVERSAL::$$ => *main::$$_<perlio.c => *main::_<perlio.c$main:: => *main::main::$- => *main::-$_<perlmain.c => *main::_<perlmain.c$PerlIO:: => *main::PerlIO::$_<universal.c => *main::_<universal.c$0 => *main::0 => *main::$@ => *main::@$_<xsutils.c => *main::_<xsutils.c$STDOUT => *main::STDOUT$IO:: => *main::IO::$ => *main::$_ => *main::_$+ => *main::+$STDERR => *main::STDERR$Internals:: => *main::Internals::$STDIN => *main::STDIN$DB:: => *main::DB::$<none>:: => *main::<none>::[oracle@jhoa 2]$ cat 1.pl foreach $key (keys %main::){print "\$$key => $main::{$key}\n";}得到变量$a的值print ${$main::{'a'}};存储变量和子程序的名字的缺省符号表为main包,如果在程序里定义了其它的包,当你想切换回去使用缺省的符号表,可以重新指定main包。2.5.1 名字查找常用通用含义替换' '      q//      文本字串否" "    qq//       文本字串是` `   qx//        执行命令是()   qw//         单词数组否//   m//          模式匹配是s///   s///         模式替换是y///   tr///        字符转换否" "   qr//          正则表达式是[oracle@jhoa 2]$ cat 2.pl unlink('aa');删除aa文件[oracle@jhoa 2]$ cat 3.pl @files=qw/1 2 3 4 5 6/;while (@files) {my $file = shift @files;print "\$file is $file\n";}[oracle@jhoa 2]$ perl 3.pl $file is 1$file is 2$file is 3$file is 4$file is 5$file is 6[oracle@jhoa 2]$ cat 4.pl @stuff = ("one", "two", "three"); $stuff = @stuff;print "\$stuff is $stuff\n";2.11.2 行输入(尖角)操作符@line = <STDIN>;foreach   (@line){print "\$_ is $_\n";};@line = <>;foreach   (@line){print "\$_ is $_\n";};<> 指定文件获得<STDIN>获取标准输入2.11.3 文件名聚集操作符@files=<*.pl>;foreach (@files){print $_};

0 0
原创粉丝点击