广州葆元健康生物科技有限公司


为Java程序员准备的10分钟Perl教程

网络编程 为Java程序员准备的10分钟Perl教程 06-21

1.从基础开始

不像java,Perl不需要“main”方法作为入口点。要运行一个简单的Perl程序如下:


# comment starts with "#"
# the name is hello.pl
print "Hello Perl!";

只需执行:

perl hello.pl

2. 日期类型

在Perl中的日期类型是非常简单,它有3种类型:标量,数组和Hash。

标是一个单值,它基本上可以是任何其他比数组或哈希。
数组是一个数组,可以包含不同类型的元素,如整数,字符串。

哈希基本上是像Java的HashMap中。

将下面的代码结合所有的使用情况。


#claim a hash and assign some values
my %aHash;
$aHash{'a'}=0;
$aHash{'b'}=1;
$aHash{'c'}=2;
$aHash{'d'}=3;
$aHash{'e'}=4;

#put all keys to an array
my @anArray = keys (%aHash);

#loop array and output each scalar
foreach my $aScalar (@anArray){
print $aScalar."n";
}

输出结果:


e
c
a

d

如果你想对数组进行排序,你可以简单地使用类似下面的排序功能:


foreach my $aScalar (sort @anArray){
print $aScalar."n";
}

3. 条件、循环表达式

Perl为条件和循环语句准备了if, while, for, foreach等关键字,这与Java非常类似(switch除外)。

详情请见下面的代码:


#if my $condition = 0;
if( $condition == 0){
print "=0n";
}
elsif($condition == 1){
print "=1n";
}
else{
print "othersn";
}


#while while($condition < 5){
print $condition;
$condition++;
}
for(my $i=0; $i< 5; $i++){
print $i;
}

#foreach my @anArray = ("a", 1, 'c');
foreach my $aScalar (sort @anArray){
print $aScalar."n";
}

4.文件的读写

下面这个例子向我们展示了如何读写文件。这里请注意">"和">>"之间的区别,">>"在文件末尾追加内容,">"创建一个新的文件储存信息。


#read from a file
my $file = "input.txt";
open(my $fh, "<", $file) or die "cannot open < $file!";
while ( my $aline = <$fh> ) {
#chomp so no new line character
chomp($aline);
print $aline;
}

close $fh;

# write to a file
my $output = "output.txt";
open (my $fhOutput, ">", $output) or die("Error: Cannot open $output file!");
print $fhOutput "something";
close $fhOutput;

5.正则表达式

Perl中有两种使用正则表达式的方法:m和s。

下面的代码在$str上应用了正则表达式。

$str =~ m/program<SPAN>(</SPAN>creek|river)/

如果$str的内容是“programcreek”,表达式将会返回true。这也可以被用于条件判断或循环。

6.传值/引用的语法

在Perl中没有必要定义方法/函数,但如果你这么做了,那将大大提高代码的模块化和可充用性。但我们需要对参数的传递非常小心。

你可以直接传递一个标量,但如果传递的是数组或哈希类就需要特别的当心。

数组:


my @testArray = (1, 3, 2);

#In sub sub processArrayByReference($) {
my $arrayref = shift;
my @array = @$arrayref;
#...
}

#In sub processarray: sub processArrayByValue($){
my @array = @_;
#...
}

processArrayByValue(@testArray);
processArrayByReference( @testArray );

哈系类:


sub printHash($) {
my %hash = %{ shift() };
for my $key ( sort keys %hash ) {
my $value = $hash{$key};
print "$key => $valuen";
}
}

printHash(%twoLettersCount);

7.一些实例

1).遍历字符串中的每个字符。


my @lineCharArray = split('',$aline);
foreach my $character (@lineCharArray){
print $character."n";
}

2).创建一个包含26个字母的数组。
你可以简单地实现这个功能并且无需循环26次。


my @charArray = ('a'..'z' );
my @twoCharArray = ('aa'..'zz');

以上是第一个版本的“10分钟”,我还将根据评论持续更新本文。

原文见:http://www.programcreek.com/2012/09/10-minutes-perl-tutorial-for-java-developer/

perl与shell获取昨天、明天或多天前的日期的代码
一、首先说下perl如何获取#!/usr/bin/perl-wusePOSIXqw(strftime);my$day=strftime("%Y%m%d",localtime(time-24*3600));#获取昨天的日期二、在Linux中对mandate-d参数说的比拟笼统,

Perl遍历目录和使用Linux命令分析日志的代码实例分享
实例代码:#!/usr/bin/perl-w$path='/root/Documents';#当前工作目录$dir="$path/images";#要遍历的目录$log_file="$path/access_201209.log";#nginx日志0903~0907,filesize:5.4G$result_file='r

Perl中的特殊内置变量详细介绍
内置变量$_:先来看一个例子:#!/usr/bin/perl-w@array=qw(abcd);foreach(@array){print$_,"";}例子的作用就是定义一个数组并把其中的元素打印出来,这里需要注意的


编辑:广州葆元健康生物科技有限公司

标签:数组,代码,你可以,遍历,是一个