当前位置 博文首页 > 为Java程序员准备的10分钟Perl教程

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

    作者:admin 时间:2021-02-02 18:17

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

    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/

    js