perl 编程基础
来源:互联网 发布:淘宝客服骂人投诉电话 编辑:程序博客网 时间:2024/05/21 04:39
Perl:General@
1.1.1 Gen_execute
Windows:
1 >> perl sample.pl
2 >> sample.pl
Unix:
1 >> perl sample.pl
2 >> chmod 0777 sample.pl
>> sample.pl
直接包含在命令行中的程序,通过-e 开关指定:
>> perl –e “print ‘hello world !’”
1.1.2 Gen_运行_编译_调试
>> sample.pl –w “%f” # 运行
>> sample.pl –w –c “%f” # 编译
>> sample.pl –w –d “%f” # 调试
perl -Mdiagnostics ./my_program
使用命令行选项 -M 来控制,在需要时加载 diagnostics 编译命令。
1.1.3 Gen_变量_variable
-perl 中的变量不用声明,可以直接使用。但是声明变量有助于查错,是一种良好的编程习惯。
1.1.4 Gen_引用
创建:使用反斜杠操作符创建引用,相当于C语言的&。
$numref = \42;
$mesref = \”hello ref”;
[..]和{..}创建一个指向数组和hash的引用,他们创建一个自己的内容的副本,并返回指向它的一个引用,所以与\操作符不一样。
@array = [1,2,3,4];
@copyhasref = {%hash};
访问:$相当于C中的*,用于访问引用指向的值。
标量引用:
数组引用:
哈希引用:
代码引用:
通过ref函数返回引用的类型。
>print “ref type”.ref($ref);
1.1.5 Gen_常量
标量常量:
列表常量:
哈希常量:
Gen_常量
1.1.6 Gen_操作符
赋值操作符:
%x = (‘Red’=>20,’Green’=>40,’Blue’=>10);
算术操作符:
除 /, 取余 %。
字符操作符:
连接操作符“.”,复制操作符“x”。
$example = ‘Hello’.’World’;
$example = “ab”x3; #ababab
@array = (a,b,c)x2; #(a,b,c,a,b,c);
比较操作符:
数字比较:<, >, ==, <=, >=, !=, <=>(比较两个值,返回0,1,-1)
字符串比较:lt, gt, eq, le, ge, ne, cmp(比较两个值,返回0,1,-1)
逻辑操作符:
!逻辑非, || 逻辑或, && 逻辑与,逻辑异或,
位操作符:
&, |, ~(位非),^ 位异或, << 左移, >> 右移
递增和递减操作符:
++, --
箭头操作符
两种用法:
1 访问引用中的数据元素
$array_element = $arrayref -> [1];
$hash_element = $hashref -> {$key};
2 在对象中使用,通过它来调用一个对象(或实例)的方法。
$object -> method(@arguments);
三元操作符:
<condition>?<true-result>:<false-result>;
1.1.7 Gen_文件与目录
Perl程序是通过文件句柄来进行I/O操作的。
缺省的文件句柄:
STDIN:标准输入,
STDOUT:标准输出
STDERR:标准错误输出。
1.1.8 Gen_写文件
$append = 0;
If ($append)
{
open (MYOUTFILE, “>filename.out”); #覆盖写
}
else
{
open (MYOUTFILE, “>>filename.out”); #追加写
}
print MYOUTFILE “Timestamp:” ; #写文本,没有换行。
print MYOUTFILE timestamp(); #把函数返回值写到文本。
print MYOUTFILE “\n”; #写换行符
#*****打印自由文本,需要后面的分号***#
print MYOUTFILE << “MyLabel”;
Steve was here
and now is gone
but left his na
to carry on.
MyLabel
#关闭文件
close (MYOUTFILE);
1.1.9 Gen_读文件
#读文件——单行
open (MYINPUTFILE, “<filename.out”);
while(<MYINPUTFILE>)
{
my ($line) = $_; #存下$_的值,方便操作。
chomp($line); # 把结尾的换行符去掉。
$line =~ tr/[a-z]/[A-Z]/; #小写转换为大写。
print “$line\n”;
}
#读文件——多行
open (MYINPUTFILE, “<filename.out”);
my(@lines) = <MYINPUTFILE>; #把文件内容一次性读到数组。
@lines = sort(@lines); #把数组排序。
foreach my $line (@lines)
{
print “$line”;
}
close(MYINPUTFILE);
1.1.10 Gen_文件_其他
删除文件:
unlink(‘c:/test.txt’); #删除文件test.txt.
unlink(”cowbird”,”starling”);
unlink <*.o> ; # 如同shell命令“rm *.o”
重命名:
rename(“fred”,”barney”) \\ die “Can’t rename fred to barney:$!”;
创建目录:
mkdir(“gravelpit”, 0777) \\die “Can’t mkdir gravelpit:$!”;
删除目录:
rmdir(“gravelpit”) \\ die “cannot rmdir gravelpit: $!”;
1.1.11 Gen_例程(函数)_subroutine
例程,是结构化程序设计的基础,它接受多个输入参数,返回一个输入参数。
定义语法:
sub Subroutine_name[ () ]
{
sequence_of_statements;
}
传递参数给例程是通过特殊变量@_完成的。
sub Logger($)
{
($line) = @_;
Print “$line\n”;
}
sub Logger($)
{
$line = shift; #通过shift函数访问输入参数
Print “$line\n”;
}
1.1.12 Gen_执行命令
执行操作系统命令的方法有如下几种:
1 system
my $ret = system($cmd);
if ($ret != 0)
{
die "error during execute $cmd\n extend_error=$^E \n errorno= $!\n " ;
}
2 反小点引号 `` 或者 qx
注意:反小点引号在~符号的下面,并不是单引号。
3 WScript.Shell (windows)
$WshShell = Win32:OLE->new(“WScript.Shell”);
$WshShell -> Run(“$ls_cmd”);
4 Win32:Spawn (windows)
my $cmd = ‘c:\windows\notepad.exe’;
my $args = ‘notepad.exe c:\my documents\test.txt’;
my $pid = 0;
Win32::Spawn($cmd, $args, $pid) or die
Win32::FormatMessage(Win32::GetLastError());
5 Win32:Process (windows)
Win32::Process::Create($process, $program, $comd, $handle $option, $dir);
6 另外还可以通过Net::Telnet 模块,远程执行命令。
- Perl 网络编程基础
- perl 编程基础
- perl基础-2 (Perl编程24学时教程)
- perl基础-4 (Perl编程24学时教程)
- perl基础-7 (Perl编程24学时教程)
- perl基础-9 (Perl编程24学时教程)
- Perl编程阅读笔记(基础篇I)
- perl socket编程 [perl]
- Perl基础
- perl基础
- perl基础
- Perl基础
- Perl DBI 基础
- Perl基础学习总结
- perl基础(1)
- [Perl]正则表达式基础。
- Perl基础总结
- Perl DBI 基础
- Task的使用
- MotionEvent子类注释
- 第八周项目一(1):实现复数类中的运算符重载:类的成员函数
- iOS 实现倒计时
- 从零开始nodejs系列文章
- perl 编程基础
- 关于右值引用的一个错误。
- 银联在线支付---利用测试案例代码模拟支付应用(修改)
- 读取excel 工具类
- Android f_rndis 分析笔记
- RFID系统二进制树型搜索算法是如何解决碰撞的?简述其实现步骤
- 散列(2)线性探测法和双重散列法
- Qt for Android - ANT_HOME is set incorrectly or ant could not be located
- Wireless Network(POJ-2236)(并查集)