zoukankan      html  css  js  c++  java
  • Perl的命令行参数和ARGV

    程序名:$0

    $0表示当前正在运行的Perl脚本名。有3种情况:

    1. 如果执行方式为perl x.pl,则$0的值为x.pl而非perl命令本身
    2. 如果执行方式为./x.pl,则$0的值为./x.pl
    3. 如果执行的是perl -eperl -E一行式perl程序,则$0的值为-e-E

    命令行参数ARGV

    • perl将perl命令行的参数列表放进数组ARGV(@ARGV)中。既然是数组,就可以访问($ARGV[n])、遍历,甚至修改数组元素
    • ARGV数组分三种情况收集:
      • perl x.pl a b c方式运行时,脚本名x.pl之后的a b c才会被收集到ARGV数组
      • ./x.pl a b c方式运行时,a b c才会被收集到ARGV数组
      • perl -e 'xxxxx' a b c方式运行时,a b c才会被收集到ARGV数组
    • ARGV数组索引从0开始计算,索引0位从脚本名(perl程序名)之后的参数开始计算
    • 默认,这些命令行参数是perl程序的数据输入源,也就是perl会依次将它们当作文件进行读取
    • 参数是有序的,读取的时候也是有序的
    • 需要区分ARGV变量和ARGV数组:
      • $ARGV表示命令行参数代表的文件列表中,当前被处理的文件名
      • @ARGV表示命令行参数数组
      • $ARGV[n]:表示命令行参数数组的元素
      • ARGV:表示<>当前正在处理的文件句柄

    例如,test.plx的内容如下:

    /usr/bin/perl
    
    print '$ARGV[0] ---> ',$ARGV[0],"
    ",
          '$ARGV[1] ---> ',$ARGV[1],"
    ",
          '$ARGV[2] ---> ',$ARGV[2],"
    ",
          '$ARGV[3] ---> ',$ARGV[3],"
    ",
          '$ARGV[4] ---> ',$ARGV[4],"
    ";
    

    执行这个程序:

    shell> ./test.plx -w a b c d
    $ARGV[0] ---> -w
    $ARGV[1] ---> a
    $ARGV[2] ---> b
    $ARGV[3] ---> c
    $ARGV[4] ---> d
    

    因为是数组,所以可以修改数组,比如强制指定元素:

    /usr/bin/perl
    
    @ARGV=qw(first second third);
    print '$ARGV[0] ---> ',$ARGV[0],"
    ",
          '$ARGV[1] ---> ',$ARGV[1],"
    ",
          '$ARGV[2] ---> ',$ARGV[2],"
    ";
    
    shell> ./test.plx a b c d
    $ARGV[0] ---> first
    $ARGV[1] ---> second
    $ARGV[2] ---> third
    

    例如,读取2个文件(a.log,b.log)的内容:

    /usr/bin/perl
    
    while(<>){
        print $_;
    }
    
    shell> ./test.plx a.log b.log
    

    如果想读取标准输入,只需使用"-"作为文件参数即可。

    $ echo -e "abcd
    efg" | ./test.plx a.log - b.log
    

    上面将按先后顺序读取a.log,标准输入(管道左边命令的输出内容),b.log。

  • 相关阅读:
    Java内存回收
    Android四大基本组件介绍与生命周期
    JAVA中获取当前系统时间
    jquery如何判断元素是否被点击_百度知道
    css控制div显示/隐藏方法及2种方法比较原码
    点击图标不断震动效果
    jquery 如何动态添加、删除class样式方法介绍_jquery_脚本之家
    HTML5绘制矩形和圆形并且还有获取在这个图层内的坐标的思路和代码
    Attribute name invalid for tag form according to TLD异常解决办法_gaigai_百度空间
    html5绘图
  • 原文地址:https://www.cnblogs.com/f-ck-need-u/p/9557041.html
Copyright © 2011-2022 走看看