关于use strict 后全局变量的定义。可以在文件中用my 定义 虽然用my但是作用域是这个文件
可以用our 定义
还可以用 use var list_of_variables 定义
Data::Dumper
具体参考:perldoc Data::Dumper
- #!/usr/bin/perl
-
use Data::Dumper;
-
use warnings;
-
use strict;
-
my $a = "good";
-
my $b = "bad";
-
my @my_array = qw(one two three);
-
my %some_hash =(
-
"a" => "one",
-
"b" => "two",
-
"c" => "three",
-
);
-
$Data::Dumper::Indent = 3;
-
$Data::Dumper::Varname = "zzy";
-
print Dumper($a);
-
print Dumper(\@my_array);
-
print Dumper(\%some_hash);
-
print Dumper((\%some_hash,\@my_array));
output:
- [root@PC_IN_LAN learnperl]#./a
-
$zzy1 = 'good';
-
$zzy1 = [
-
#0
-
'one',
-
#1
-
'two',
-
#2
-
'three'
-
];
-
$zzy1 = {
-
'c' => 'three',
-
'a' => 'one',
-
'b' => 'two'
-
};
-
$zzy1 = {
-
'c' => 'three',
-
'a' => 'one',
-
'b' => 'two'
-
};
-
$zzy2 = [
-
#0
-
'one',
-
#1
-
'two',
-
#2
-
'three'
-
];
continue。。
storable 模块使用的意义:
flw:
意义就是你可以存下来,用 U 盘拷走,然后在别人的机器上再打开。
现在是网络时代,内存里的东西,需要能够发送到另一台机器。
zhlong8:
少掉了把数据结构格式化成 xml 之类的格式,用的时候再解析这两个步骤直接两个函数解决。
Data::Dumper 提供类似的功能,不过生成文件体积稍大主要用来 debug
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Time::Local 模块
$time = timelocal($sec,$min,$hour,$mday,$mon,$year);
They accept a date as a six-element array, and return the corresponding time(2) value in seconds since the system epoch (Midnight, January 1, 1970 GMT on Unix, for example).
The reault are the inverse of built-in perl functions localtime().
查看perl的文档:
man perl
perlvar 关于perl的内置变量
$\ : 在perl中的作用与awk中的RS一样,行分隔符。
------------------------------------------------------------------------------
perl 调用shell命令
两种方法
1 system(command); system返回的是命令的执行状态
2 `command` 或者 qx(command)
qx相当于加转义字符吧
perl与shell命令 通过管道连接
open(OUTPIPE,"| wc -c");
open(INPIPE,"ls -l |");
=====================================================
一个进程一旦调用exec类函数,它本身就“死亡”了,系统把代码段替换成新的程序的代码,废弃原有的数据段和堆栈段,并为新程序分配新的数据段与堆栈段,唯一留下的,就是进程号,也就是说,对系统而言,还是同一个进程,不过已经是另一个程序了。
========================================================
shift : 在函数中如果没提供数组参数的话 默认的操作对象是@_数组。如果放在外面的话,默认的操作对象是@ARGV(即命令行参数组成的数组) 其他可以查看文档。
---------------------------------------------------------
alarm 函数: 启动一个定时器。。。如果超时会产生一个ALARM 信号通过捕获该信号来达到慢系统超时的目的 后面提供一个一秒为单位的参数。 如果不提供参数的话默认以$_ 中的内容来作为参数。通过alarm 0 来关闭定时器。 函数的返回值是前一个定时器(如果有的话)留下的秒数。更详细perldoc -f alarm
alarm 一个小运用:
- #!/usr/bin/perl
-
use strict;
-
=pod
-
my $time_out=0;
-
$SIG{ALRM}=sub { $time_out = 1};
-
print "Type your password: ";
-
alarm(5);
-
my $password = <STDIN>;
-
alarm(0);
-
print "you timed out \n" if $time_out;
-
=cut
- #上面的代码是当超时时 不会自动返回
-
print "Type your password: ";
-
my $password =
-
eval{
-
local $SIG{ALRM}=sub {die "timeout\n"};
-
alarm(5);
-
return <STDIN>;
-
};
-
# eval 中的代码如果执行成功 eval的返回值是eval代码块
-
# 中最后一条语句的返回。如果发生错误,将会将错误存在$@中。
-
-
alarm(0);
-
chomp($password);
-
print "\n You timed out \n" if $@=~/timeout/;
-
print "Your password is ",$password," \n" if $password;
-------------------------------------
pipe 函数:
pipe READHANDDLE,WRITEHANDLE
作用是用来打开管道, 通过文件句柄READHANDLE 读管道,通过文件句柄WRITEHANDLE写管道
该函数可以和fork结合使用用来实现父进程与子进程之间的通信。
------------------------------------------------------------
内置变量
$. 相当于awk 中的NR
---------------------------------------
perl 中的state 和 my 的区别
理解:相当于c语言中函数的静态局部变量(用static修饰的)和动态局部变量(auto修饰的)
程序例子:
- #!/usr/bin/perl
-
use warnings;
-
use strict;
-
use feature "state";
-
while(<DATA>){
-
state $test1;
-
my $test2;
-
$test1+=$_;
-
$test2+=$_;
-
print "state:$test1\n";
-
print "my:$test2\n";
-
}
-
__DATA__
-
1
-
2
-
3
-
4
-
5
-
OUTPUT:
-
state:1
-
my:1
-
state:3
-
my:2
-
state:6
-
my:3
-
state:10
-
my:4
-
state:15
-
my:5
要加:use feature "state";
或者使用:use 5.010;
============================================================================
perl 中改变字符大小写的四个内置函数:
Perl提供了四个内置的函数类,从而能够轻松地改变字符和字的大小写。函数uc()会用大写返回其所有的参数,而lc()会用小写返回其参数。如果没有指定参数的话,uc()和lc()都会对$_变量进行操作。
要改变字的首字母的大小写,就要使用ucfirst()和lcfirst()。和uc()以及lc()类似,如果没有指定参数,ucfirst()和lcfirst()会对$_变量进行操作。
这四个函数都不会改变其参数;它们只是会返回其参数的副本,而这个副本经过了改变。所以,你必须将结果分派给一个变量或者打印它,或者用其他的方式使用返回的值。
这个是个函数分别相当于\l,\u,\U\E,\L\E
阅读(2219) | 评论(0) | 转发(0) |