设为首页收藏本站

就爱编程论坛

 找回密码
 注册

人人连接登陆

无需注册,直接登录

用新浪微博连接

一步搞定

QQ登录

只需一步,快速开始

查看: 456|回复: 0
打印 上一主题 下一主题

@ARGV:perl命令行参数 [复制链接]

Rank: 9Rank: 9Rank: 9

  • TA的每日心情
    无聊
    2025-5-27 03:37:20
  • 签到天数: 366 天

    [LV.9]以坛为家II

    论坛先锋 学习至圣 荣誉成员 论坛元老 活跃之星 终极领袖

    我玩的应用:

    跳转到指定楼层
    楼主
    发表于 2012-1-31 16:20:22 |只看该作者 |倒序浏览
    当perl脚本运行时,从命令行上传递给它的参数存储在内建数组@ARGV中,@ARGV是PERL默认用来接收参数的数组,可以有多个参数,$ARGV[0]是表示接收到的第一个参数,$ARGV[1]表示第二个。
    使用方法为:
    perl   my.pl $ARGV[0]  $ARGV[1]
    看一个具体例子:
    比如文件1的内容:
    1320238
    1320239
    1320239
    1320238
    1320238
    1320238
    1320235
    1320237

    文件2的内容:
    102 5709072117805887 4001 1301854
    102 5709072117807510 4001 1320292
    102 5709072117838653 4001 1301857
    102 5709072117814280 4001 1305832
    102 5709072117839397 4001 1310673
    102 5709072117839335 4001 1311270

    我想先把文件1的内容读取出来,然后读取文件二的内容,在读取文件2的内容的时候,文件2的最后一列需要包含在上文件1内。
    [root@localhost ~]$ perl  ex.pl 1.txt 2.txt
    [root@localhost ~]$ cat ex.pl
    #!/usr/bin/perl
    use strict;

    open(ONE,"$ARGV[0]") or die $!;
    open(TWO,"$ARGV[1]") or die $!;

    my %hash;
    while (<TWO>) {
        chomp;
        my @line=split;
        my $column4=$line[3];
        $hash{$column4}=$_;
    }

    while (<ONE>) {
         chomp;
         print $hash{$_} if defined $hash{$_};
       
    }

    print"\n";
    分享到: QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    分享分享0 收藏收藏0 支持支持0 反对反对0 分享到人人 转发到微博
    [img=http://mail.qq.com/cgi-bin/qm_share?t=qm_mailme&email=fRUcHhYWGAQ9GxIFEBwUEVMeEhA]http://rescdn.qqmail.com/zh_CN/htmledition/images/function/qm_open/ico_mailme_02.png[/img]

    使用道具 举报

    您需要登录后才可以回帖 登录 | 注册 人人连接登陆

    晴云孤魂's Blog|就爱编程搜帖|手机版|Archiver|就爱编程论坛     

    GMT+8, 2025-7-1 21:39 , Processed in 0.089670 second(s), 27 queries .

    Powered by Discuz! X2

    © 2001-2011 Comsenz Inc.

    回顶部