技术开发 频道

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

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

  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
b
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
"=0\n";
}
elsif($condition
== 1){
    print
"=1\n";
}
else{
    print
"others\n";
}


#
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的内容是“programcreek”,表达式将会返回true。这也可以被用于条件判断或循环。

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

  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 => $value\n";
}
}

printHash(
\%twoLettersCount);

  7.一些实例

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

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

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

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

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

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

0
相关文章