您的位置:首页 > 职场人生

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

2013-11-12 14:16 375 查看


英文原文:10minutesPerltutorialforJavadeveloper

这10分钟教程并不是Java和Perl的比较。目标是探索作为Java开发人员如何快速学习Perl。以下是一些从我的角度来看的关键笔记。

1.从基础开始

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

1
#
commentstartswith"#"
2
#
thenameishello.pl
3
print
"Hello
Perl!"
;
1
perl
hello.pl
2.日期类型

在Perl中的日期类型是非常简单,它有3种类型:标量,数组和Hash。
标是一个单值,它基本上可以是任何其他比数组或哈希。

数组是一个数组,可以包含不同类型的元素,如整数,字符串。

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

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

01
#claim
ahashandassignsomevalues
02
my
%aHash
;
03
$aHash
{
'a'
}=0;
04
$aHash
{
'b'
}=1;
05
$aHash
{
'c'
}=2;
06
$aHash
{
'd'
}=3;
07
$aHash
{
'e'
}=4;
08
09
#put
allkeystoanarray
10
my
@anArray
=
keys
(
%aHash
);
11
12
#loop
arrayandoutputeachscalar
13
foreach
my
$aScalar
(
@anArray
){
14
print
$aScalar
.
"\n"
;
15
}
输出结果:

1
e
2
c
3
a
4
b
5
d
如果你想对数组进行排序,你可以简单地使用类似下面的排序功能:

1
foreach
my
$aScalar
(
sort
@anArray
){
2
print
$aScalar
.
"\n"
;
3
}
3.条件、循环表达式

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

详情请见下面的代码:

01
#if
my$condition=0;
02
if
(
$condition
==
0){
03
print
"=0\n"
;
04
}
05
elsif
(
$condition
==
1){
06
print
"=1\n"
;
07
}
08
else
{
09
print
"others\n"
;
10
}
11
12
13
#while
while($condition<5){
14
print
$condition
;
15
$condition
++;
16
}
17
for
(
my
$i
=0;
$i
<
5;
$i
++){
18
print
$i
;
19
}
20
21
#foreach
my@anArray=("a",1,'c');
22
foreach
my
$aScalar
(
sort
@anArray
){
23
print
$aScalar
.
"\n"
;
24
}
4.文件的读写

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

01
#read
fromafile
02
my
$file
=
"input.txt"
;
03
open
(
my
$fh
,
"<"
,
$file
)
or
die
"cannot
open<$file!"
;
04
while
(
my
$aline
=
<
$fh
>
){
05
#chomp
sononewlinecharacter
06
chomp
(
$aline
);
07
print
$aline
;
08
}
09
10
close
$fh
;
11
12
#
writetoafile
13
my
$output
=
"output.txt"
;
14
open
(
my
$fhOutput
,
">"
,
$output
)
or
die
(
"Error:
Cannotopen$outputfile!"
);
15
print
$fhOutput
"something"
;
16
close
$fhOutput
;
5.正则表达式

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

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

1
$str
=~
m/program<span>(</span>creek|river)/
如果$str的内容是“programcreek”,表达式将会返回true。这也可以被用于条件判断或循环。
6.传值/引用的语法

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

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

数组:

01
my
@testArray
=
(1,3,2);
02
03
#In
subsubprocessArrayByReference($){
04
my
$arrayref
=
shift
;
05
my
@array
=
@
$arrayref
;
06
#...
07
}
08
09
#In
subprocessarray:subprocessArrayByValue($){
10
my
@array
=
@_
;
11
#...
12
}
13
14
processArrayByValue(
@testArray
);
15
processArrayByReference(
\
@testArray
);
哈系类:

1
sub
printHash($)
{
2
my
%hash
=
%{
shift
()
};
3
for
my
$key
(
sort
keys
%hash
)
{
4
my
$value
=
$hash
{
$key
};
5
print
"$key
=>$value\n"
;
6
}
7
}
8
9
printHash(\
%twoLettersCount
);
7.一些实例

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

1
my
@lineCharArray
=
split
(
''
,
$aline
);
2
foreach
my
$character
(
@lineCharArray
){
3
print
$character
.
"\n"
;
4
}
2).创建一个包含26个字母的数组。

你可以简单地实现这个功能并且无需循环26次。

1
my
@charArray
=
(
'a'
..
'z'
);
2
my
@twoCharArray
=
(
'aa'
..
'zz'
);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java perl