2011-03-26 19:22:04| 分类: perl&bioperl | 标签: |举报 |字号大中小 订阅
使用方法为:
perl
看一个具体例子:
比如文件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
[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>) {
}
while (<ONE>) {
}
print"\n";
关于 perl 中命令执行以及@ARGV的使用
在 perl 中提供了很方便的命令行执行的工具。 `` (键盘上 Tab 建上边的键)可以用于执行 perl 命令行。
下面就以一个例子来说明具体的用法。
程序一( Demo.pl )
#!/usr/bin/perl
use strict ;
use warnings ;
if ( $ ARGV [ 0 ] eq "1" ){
`perl F:\\Demo2.pl` ;
} else {
`perl F:\\Demo3.pl` ;
}
程序二 (Demo2.pl)
#!/usr/bin/perl -w
use strict ;
use warnings ;
unless ( open ( FILE_F , ">>F:\\log2.log" )){
print "Can not open the file" ;
}
print FILE_F "Demo2" ;
close ( FILE_F );
程序三 (Demo3.pl)
#!/usr/bin/perl
use strict ;
use warnings ;
unless ( open ( FILE_F , ">>F:\\log3.log" )){
print "Can not open the file" ;
}
print FILE_F "Demo3" ;
close ( FILE_F );
程序解释
我们在命令行中执行使用 perl 命令( perl ${Demo.pl 所在的目录 }\\Demo1.pl ,例如 perl F:\\Demo1.pl 1 )来执行程序一 ,然后如果后面的参数为 1 ,则执行 ` perl F:\\Demo2.pl ` , perl 就会执行 F 盘目录下的 Demo2.pl ,执行 Demo2.pl 后 Demo2.pl 就会在 F 盘目录下建立文件 log2.log ,并写入“ Demo2 ”;如果后面的参数不是 1 ,则执行 ` perl F:\\Demo3.pl ` , perl 就会执行 F 盘目录下的 Demo3.pl ,执行 Demo3.pl 后 Demo3.pl 就会在 F 盘目录下建立文件 log3.log ,并写入“ Demo3 ”。
同时,我们也看到了 @ARGV 的使用方法。
@ARGV 就是接受 perl 的命令行执行参数。
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/gan690416372/archive/2010/01/10/5167501.aspx
Perl 会把命令行参数保存到特殊数组ARGV 中,该数组的下标从0 开始,ATGV[0] 在这里并不代表程序名,而是代表着脚本后面的第一个词,,变量$#ARGV 在Perl 中负责保存数组最后一个元素的编号,而不是数组元素数目.因此,命令行参数的总数是$#ARGV+1。$#ARGV变量的初始值为-1。
示例10.27
(The Script)
#!/usr/bin/perl
1 die "$0 requires an argument.\n" if $#ARGV < 0 ;
# Must have at least one argument
2 print "@ARGV\n"; # Print all arguments
3 print "$ARGV[0]\n"; # Print first argument
4 print "$ARGV[1]\n"; # Print second argument
5 print "There are ", $#ARGV + 1," arguments.\n";
# $#ARGV is the last subscript
6 print "$ARGV[$#ARGV] is the last one.\n"; # Print last arg
(Output)
$ perl.arg
2 perl.arg requires an argument.
$ perl.arg f1 f2 f3 f4 f5
2 f1 f2 f3 f4 f5
3 f1
4 f2
5 There are 5 arguments.
6 f5 is the last one.
解释
1. 如果没有收到任何命令行参数,则通过die 函数退出脚本。特殊变量$0 负责保存Perl 脚本
的名称,即Perl.arg。
2. 打印数组@ARGV 的内容。
3. 打印第一个参数值,它不是脚本名。
4. 打印第二个参数值。
5. $#ARGV 变量含有最后一个参数的下标。由于下标是从0 开始的,因此$#ARGV+1 表示参
数的总数,而非脚本名的长度。
6. 由于$#ARGV 变量含有最后一个参数的下标,因此$ARGV[$#ARGV] 是数组@ARGV 的最
后一个元素的值。
标量
$ARGV
数组
@ARGV
头文件
ARGV
$0 脚本名称$#ARGV 最后一个元素的下标数值
图10-4 有关ARGV 的内容
评论