Category Archives: Perl

Perl中切割字符串 限定分为几组

在Perl中,切割字符串很简单。
my ($k, $v) = split(/\t/, $string);
但如果数据中含有不止一个分隔符\t呢,比如这样:
a\tb\tc
此时,需要给spilit第三个参数,一个正整数,表示至多分为多少组。比如我们想只使用第1个分隔符,切分为2部分,则输入2。
my($first, $rest) = split(/\t/, $string, 2);
 [......]

继续阅读

Perl中如何让Hash的值为数组

这涉及到Perl的scalar和Array语境问题。

有问题的代码:
$new_hash{$some_key1} = @some_array1;

foreach($newhash{$some_key1}) {
print $_
}
打印的结果是只输出了一个元素,其值为数组的长度。

这里的问题是,赋值给Hash的Value是数组的长度,需要强制使用数组语境@{$hash{$key}}:
@{$new_hash{$some_key1}} = @some_array[......]

继续阅读

[转]Perl使用Getopt获取命令行参数

 

代码示例如下:
use Getopt::Std;
my %opt;
getopts('d:f:p', \%opt);
if($opt{p}){
...
}
if($opt{d}){
$dFile=$opt{d};
}
解释一下"d:f:p",d和f后有冒号,表示-d,-f后面要跟参数。p后面没有冒号,表示-p后面不带参数。

而且-d,-f后所跟的参数分别赋给变量$opt_d和$opt_f。对于变量$opt_p,若命[......]

继续阅读

Perl读书笔记(2)

Learning Perl 6th

Chapter 3 and Chapter 4

1、List是Scalar变量的有序集合,Array是List集合所对应的具体变量(List是数据,Array是对应的存储空间)。

2、与Python类似,Perl的List中变量可以是不同的Scalar元素。

3、Array的定义、下标访问如下:
#!/usr/bin/perl
$a[0] = 1;
$a[1] = "2";
$a[2] = 3;
print[......]

继续阅读

Perl读书笔记(1)

Learning Perl 6th

Chapter 1 and Chapter 2

1、Perl的优点:开发相对快速(比较于C),功能强大,执行效率较高(相对于Python),可移植性。

2、Perl脚本中,直接用`cmd`执行其他Shell命令,类似于SH脚本。
#!/usr/bin/perl
$result=`ls -alh`;
print $result;
3、上述$是scalar变量(标量,单一变量),而@表示Array变量(数组)。

4、Perl支持In[......]

继续阅读