zoukankan      html  css  js  c++  java
  • Perl 学习手札之六: Loops

    loops are used for repeating code

    eg: while(condition){

      statement1;

      statement2;

    }

    perl provide two basic types of loops

    while/until loops

    for/foreach loops

    while.pl

    #!/usr/bin/perl
    use strict;
    use warnings;

    main(@ARGV);

    sub main
    {
    open(FH, "linesfile.txt");
    while(my $line = <FH>){
    # message("$line");
    print $line;
    }

    close FH;
    }

    sub message
    {
    my $m = shift or return;
    print("$m\n");
    }

    sub error
    {
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
    }

    first setup a file named linesfile.txt, which content is:

    This is line 1
    This is line 2
    This is line 3
    This is line 4
    This is line 5

    until.pl

    #!/usr/bin/perl
    use strict;
    use warnings;

    main(@ARGV);

    sub main
    {
    my $line;
    open(FH, "linesfile.txt");
    #until(($line=<FH>)=~/3/){
    # message("$line");
    #}

    message("$line") until ($line=<FH>)=~/3/;
    close FH;
    }

    sub message
    {
    my $m = shift or return;
    print("$m\n");
    }

    sub error
    {
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
    }

    this script will print the content of file linesfile.txt until the script match 3

    foreach.pl

    #!/usr/bin/perl
    use strict;
    use warnings;

    main(@ARGV);

    sub main
    {
    my @list= ("one","two","three","four","five");
    # foreach my $s (@list){
    # message($s);
    # }

    # foreach (@list){
    # message($_);
    # }

    message($_) foreach @list;
    }

    sub message
    {
    my $m = shift or return;
    print("$m\n");
    }

    sub error
    {
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
    }

    注意注释掉的部分,写法和之前的condition语句一样。

    loop.pl

    #!/usr/bin/perl
    use strict;
    use warnings;

    main(@ARGV);

    sub main
    {
    my @list= ("one","two","three","four","five");
    my $i;
    for($i=0;$list[$i];$i++){
    message($list[$i]);
    }

    }

    sub message
    {
    my $m = shift or return;
    print("$m\n");
    }

    sub error
    {
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
    }

    C分格的for 循环写法

    control.pl

    #!/usr/bin/perl
    # loops.pl by Bill Weinman <http://bw.org/contact/>
    # Copyright (c) 2010 The BearHeart Group, LLC
    #

    use strict;
    use warnings;

    main(@ARGV);

    sub main
    {
    open(FH, "linesfile.txt");
    while(my $line=<FH>){
    #last if $line =~/3/;
    next if $line =~/3/;
    print $line;
    }
    close FH;
    }

    sub message
    {
    my $m = shift or return;
    print("$m\n");
    }

    sub error
    {
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
    }

    注意注释掉的部分,在使用last和next的时候,得到的结果的不同。

    profix.pl

    #!/usr/bin/perl
    use strict;
    use warnings;

    main(@ARGV);

    sub main
    {
    my $line='';
    open(FH, "linesfile.txt");
    #print while(<FH>);
    #print $_ while($_=<FH>);

    print $line=<FH> until($line=~/3/);
    close FH;
    }

    sub message
    {
    my $m = shift or return;
    print("$m\n");
    }

    sub error
    {
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
    }

    注意:注释的两行得到的结果是等价的,这里描述了$_的用法。

    profix2.pl

    #!/usr/bin/perl
    use strict;
    use warnings;

    main(@ARGV);

    sub main
    {
    my @list = ('one','two','three','four','five');
    print "$_\n" foreach @list;
    }

    sub message
    {
    my $m = shift or return;
    print("$m\n");
    }

    sub error
    {
    my $e = shift || 'unkown error';
    print("$0: $e\n");
    exit 0;
    }

    在用到foreach的时候的用法;








  • 相关阅读:
    2014年辛星完全解读Javascript第六节 对象
    2014年辛星完全解读Javascript第五节 break和continue与错误处理
    2014年辛星完全解读Javascript第四节 流程控制语句
    2014年辛星完全解读Javascript第三节
    移动端滑动卡顿问题
    移动端iOS阻止橡皮筋效果
    inline-block 元素之间的空白问题
    初识webview
    原型链、prototype、_proto_那些事
    VMware workstation转到vsphere解决办法
  • 原文地址:https://www.cnblogs.com/hanleilei/p/2358494.html
Copyright © 2011-2022 走看看