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

英文原文:10 minutes Perl tutorial for Java developer


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

1.从基础开始

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

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


2. 日期类型

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

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

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

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

01 #claim a hash and assign some values
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 all keys to an array
10 my @anArray keys (%aHash);
11   
12 #loop array and output each scalar
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 from a file
02 my $file"input.txt";
03 open(my $fh"<"$file) or die"cannot open < $file!";
04 while my $aline = <$fh> ) {
05     #chomp so no new line character
06     chomp($aline);
07     print $aline;
08 }
09  
10 close $fh;
11   
12 # write to a file
13 my $output"output.txt";
14 open (my$fhOutput">"$output) or die("Error: Cannot open $output file!");
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 sub sub processArrayByReference($) {
04     my $arrayrefshift;
05     my @array    = @$arrayref;
06     #...
07 }
08   
09 #In sub processarray: sub processArrayByValue($){
10     my @array @_;
11     #...
12 }
13  
14 processArrayByValue(@testArray);
15 processArrayByReference( \@testArray );

哈系类:
1 subprintHash($) {
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 @lineCharArraysplit('',$aline);
2 foreach my $character(@lineCharArray){
3     print $character."\n";
4 }

2).创建一个包含26个字母的数组。

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值