zoukankan      html  css  js  c++  java
  • Perl--包

    在 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:: 包的变量 $bert
    
    main默认的包名,没有单独的文件
    
    包定义:
    
    名字空间namespace:
    
    使代码段不发生冲突而用以分开代码的空间。
    
    把变量和函数分为不同区间的标记,不同空间中的变量或函数可以同名。使用变量要带上名空间的前缀$name::a
    
    
    包定义 package mypack;
    
    得到main包所有的变量名:
    
    [oracle@jhoa 2]$ cat 1.pl 
    foreach $key (keys %main::)
    {print "$$key => $main::{$key}
    ";}
    [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}
    ";}
    
    
    得到变量$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
    ";
    }
    [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
    ";
    
    
    2.11.2 行输入(尖角)操作符
    
    @line = <STDIN>;
    foreach   (@line){
    print "$_ is $_
    ";
    };
    
    
    @line = <>;
    foreach   (@line){
    print "$_ is $_
    ";
    };
    
    <> 指定文件获得
    
    <STDIN>获取标准输入
    
    
    2.11.3 文件名聚集操作符
    @files=<*.pl>;
    foreach (@files){print $_};
    
    

  • 相关阅读:
    网站测试
    shell102输出数组
    shell101变量
    shell100for无参数形式
    shell99函数中传数组
    shell98函数的参数
    将php中session存入redis中
    windows下安装redis客户端
    window下phpstudy开启redis扩展
    *ginx下开启phpredis扩展
  • 原文地址:https://www.cnblogs.com/hzcya1995/p/13351973.html
Copyright © 2011-2022 走看看