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的时候的用法;








  • 相关阅读:
    Java实习二
    Java实习一
    从0开始 Java实习 黑白棋
    从0开始 Java学习 packet用法
    解题报告:hdu 1276 士兵队列训练问题
    从0开始 数据结构 AC自动机 模板(from kkke)
    从0开始 数据结构 AC自动机 hdu 2222
    从0开始 数据结构 字典树 hdu1251
    从0开始 图论学习 拓扑排序 链式前向星表示法
    ui爬虫工具-未完成
  • 原文地址:https://www.cnblogs.com/hanleilei/p/2358494.html
Copyright © 2011-2022 走看看