一、变量内存占用
场景:
读入一个非常大的文本文件,大概180m,处理逻辑很简单,可以忽略
伪代码如下
#!/usr/bin/perl
open(FH,"ip.txt");
#my @a=<FH>;
while (<FH>){
chomp;
$a .= $_;
}
1. 当直接while 读取文件句柄时,使用pmap查看程序占用内存在220m左右,可以接受
2. 当把文件句柄读入数组时,使用pmap查看程序占用内存2.1g左右,使用惊人
阅读全文…
perldoc:
perldoc perltoc # Perl 文档目录,了解其概要
perldoc -f # 查询 Perl 内置函数
perldoc -v # 查询 Perl 预定义变量
perldoc -q # 搜索 Perl FAQ
perldoc -m # 查看 Perl 模块
perldoc -l # 显示 Perl 模块路径
perldoc -u # 查看 Pod 源文件
perldoc -t # 无格式输出
rpm:
yum:
sed ‘/a/,/b/ s/^/#/’ file.conf 模式匹配,ab之间包括ab,行首加#
列表是标量的集合,数组是存储列表的变量。
更精确的说,列表指的是数据,而数组指的是变量。列表的值不一定放在数组里,但每一个数组变量都一定包含一个列表(即使列表可能是空的)。
列表与数组最主要的区别在于在标量环境中:数组被解释为其长度;而列表则被解释为其最后一个元素,此时列表相当于由逗号操作符组成的表达式。
测试代码:
@array = ( "a", "b", "c" );
$num = @array;
$list = ( "a", "b", "c" );
print
"The number of array elements is "$num";nThe last element of list is "$list".n";
阅读全文…
perl引用的意义:可以实现动态调用不同函数,实现Hash和Array的多个函数参数同时传递
perl的引用相当于c中的指针,有以下几种类型
一 引用
声明方式
1 一般方式
$scalarref = \$foo; #标量引用 SCALAR, $foo='hello';
$constref = \186_282.42; #标量(常量)引用 SCALAR
$arrayref = \@arr; #数组引用 ARRAY, @arr=1..100;
$hashref = \%hash; #hash引用 HASH,%hash=('a'=>1,'b'=>2);
$coderef = \&add; #函数引用 CODE,sub add{($a,$b)=@_; return $a+$b;}
$globref = \*STDOUT; #GLOB句柄引用
2 匿名方式
另外声明方式采用匿名方式声明 如下(针对数组,hash,函数)
$arrRef=[1,2,3,4,5]; #指向匿名数组的引用
$hashRef={'a'=>1,'b'=>2}; #指向匿名hash的引用
$subRef=sub{return 1;}; #指向匿名函数的引用
3 符号表声明方式
$scalarref = *foo{SCALAR}; # 和 \$foo 一样
$arrayref = *ARGV{ARRAY}; # 和 \@ARGV 一样
$hashref = *ENV{HASH}; # 和 \%ENV 一样
$coderef = *handler{CODE}; # 和 \&handler 一样
$globref = *foo{GLOB}; # 和 \*foo 一样
$ioref = *STDIN{IO}; # ?...
阅读全文…
近期评论