perl命令行参数内建数组@ARGV浅析(perl数组操作)学会了吗

随心笔谈9个月前发布 admin
236 00
🌐 经济型:买域名、轻量云服务器、用途:游戏 网站等 《腾讯云》特点:特价机便宜 适合初学者用 点我优惠购买
🚀 拓展型:买域名、轻量云服务器、用途:游戏 网站等 《阿里云》特点:中档服务器便宜 域名备案事多 点我优惠购买
🛡️ 稳定型:买域名、轻量云服务器、用途:游戏 网站等 《西部数码》 特点:比上两家略贵但是稳定性超好事也少 点我优惠购买

文章摘要

这篇文章介绍了 Perl 脚本中如何处理命令行参数,并通过具体的例子展示了如何读取两个文件的内容。文章解释了 `@ARGV` 这个内建数组的作用,它用于接收从命令行传递的参数。例如,运行 `perl ex.pl 1.txt 2.txt` 时,`$ARGV[0]` 会接收第一个文件 `1.txt`,`$ARGV[1]` 会接收第二个文件 `2.txt`。 文章进一步详细说明了如何使用 Perl 读取文件内容,并将第二个文件的每一行与第一个文件的内容结合。具体来说,脚本通过 `open` 函数打开两个文件,使用 `while` 循环读取每一行,并通过 `split` 方法分割每一行的字段。然后,提取第二个文件的第四列(`$column4`)作为 hash 的键,将对应的行存储在 hash 表中。最后,通过循环遍历 hash 表中的键值对,打印出符合条件的行。 这篇文章的目的是帮助读者理解如何利用 Perl 处理命令行参数,并通过脚本实现文件内容的结合与输出。



当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 () {

    chomp;

    my @line=split;

    my $column4=$line[3];

    $hash{$column4}=$_;

}

while () {

     chomp;

     print $hash{$_} if defined $hash{$_};

}

print”\n”;

您可能感兴趣的文章:Perl调用shell命令方法小结Perl Sort函数用法总结和使用实例Perl内置特殊变量总结Perl中的特殊内置变量详细介绍

© 版权声明

相关文章