• Perl 学习手札之二: Guide to experienced programmers


    open a file and return its number of lines.

    Version 1st:

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

    my $filename = "linesfile.txt"; # the name of the file

    open(FH, $filename);    # open the file
    my @lines = <FH>;       # read the file
    close(FH);              # close the file

    my $count = scalar @lines;  # the number of lines in the file
    print("There are $count lines in $filename\n");

    Version 2nd

    #!/usr/bin/perl
    use strict;
    use warnings;
    use IO::File;

    my $filename = "linesfile.txt"; # the name of the file

    # open the file - with simple error reporting
    my $fh = IO::File->new( $filename, "r" );
    if(! $fh) {
        print("Cannot open $filename ($!)\n");
        exit;
    }

    # count the lines
    my $count = 0;
    while( $fh->getline ) {
        $count++;
    }

    # close and print
    $fh->close;
    print("There are $count lines in $filename\n");

    Version 3rd:

    #!/usr/bin/perl
    use strict;
    use warnings;
    use IO::File;

    main(@ARGV);

    # entry point
    sub main
    {
        my $filename = shift || "linesfile.txt";
        my $count = countlines( $filename );
        message("There are $count lines in $filename");
    }

    # countlines ( filename ) - count the lines in a file
    # returns the number of lines
    sub countlines
    {
        my $filename = shift;
        error("countlines: missing filename") unless $filename;

        # open the file
        my $fh = IO::File->new( $filename, "r" ) or
            error("Cannot open $filename ($!)\n");
        
        # count the lines
        my $count = 0;
        $count++ while( $fh->getline );

        # return the result
        return $count;    
    }

    # message ( string ) - display a message terminated with a newline
    sub message
    {
        my $m = shift or return;
        print("$m\n");
    }

    # error ( string ) - display an error message and exit
    sub error
    {
        my $e = shift || 'unkown error';
        print("$0: $e\n");
        exit 0;
    }

    note: 以上的三个script都是在做一个事情,统计一个文件的行数, 相比下第三个更具备扩展性,更易于维护。

     注意此时shift的用法;

    type "perldoc IO:FIle" in terminal

    type "perldoc -f" in terminal

    if using eclipse, right click and choose Perldoc, and will get the same as in terminal



  • 相关阅读:
    最小费用流(km的另一种使用思路)
    最小费用流(km的另一种使用思路)
    Python 字符串格式化
    Python字符串运算符
    Python 字符串连接
    Python 访问字符串中的值
    虚拟纹理与几何图像技术
    深度学习与传统图像识别
    ASML光刻机PK 原子弹,难度?
    L4自动驾驶技术
  • 原文地址:https://www.cnblogs.com/hanleilei/p/2271401.html
Copyright © 2020-2023  润新知