Chinaunix

标题: perl的练习题救助。希望大家能帮忙写写。 [打印本页]

作者: acguitar    时间: 2014-09-08 12:55
标题: perl的练习题救助。希望大家能帮忙写写。
刚开始接触perl,对perl一点都不懂,关于perl的语句啥的也一点都不懂呃。现在有两个练习题,希望大家帮忙写一下,最好能多些点注释。谢谢啦!

1.用Perl语言写一段代码,将目标文件一行一行的读取(txt文件),并复制到指定的文件。目标文件和指定的文件路径作为输入的参数。
2。用Perl语言写一段代码,计算出一个文本中有多少个单词(重复的也算),并按照字母表顺序输出每个单词在文本中的频率。

希望大神们能多写点注释哈。谢谢啦。
作者: acguitar    时间: 2014-09-08 13:22
求帮助啊?各位大神帮帮忙呢
作者: huang6894    时间: 2014-09-08 15:35
本帖最后由 huang6894 于 2014-09-08 15:35 编辑

Perl实例精解(原书第4版)
http://bbs.chinaunix.net/forum.p ... mp;fromuid=29097174



http://bbs.chinaunix.net/forum.p ... mp;fromuid=29097174
作者: stanley_tam    时间: 2014-09-08 19:42
这个要是帮你写了,会不会受到谴责。。。{:3_188:}
作者: stanley_tam    时间: 2014-09-08 19:57
本帖最后由 stanley_tam 于 2014-09-08 19:57 编辑

帮一半吧,一个有注释,一个没有
题1:
  1. #!perl
  2. use strict;
  3. use FileHandle;

  4. my %frequency = ();
  5. ++$frequency{$_} for split /\s+/, do {local $/; FileHandle->new(shift, 'r')->getline};
  6. printf "%-20s=>%10s$/", $_, $frequency{$_} for sort keys %frequency;

  7. __END__
复制代码
题2:
  1. #!perl
  2. use strict;
  3. use FileHandle;
  4. use Getopt::Std qw{ getopts };

  5. sub main;
  6. sub usage;

  7. main;

  8. sub main {
  9.     # get files from parameters
  10.     getopts('f:t:', \my %opts);
  11.     my ($from, $to) = @opts{'f', 't'};
  12.     usage() if not $from or not $to;

  13.     # open files
  14.     my $from_fh = FileHandle->new($from, 'r');
  15.     my $to_fh   = FileHandle->new($to,   'w');

  16.     # read and write
  17.     while ( defined(my $line = $from_fh->getline) ) {
  18.         # read one line each time
  19.         $to_fh->print($line);
  20.     }

  21.     # close
  22.     $from_fh->close;
  23.     $to_fh->close;
  24. }

  25. sub usage {
  26.     print "Usage:\n\t$0 -f file1 -t file2$/";
  27.     exit 1;
  28. }

  29. __END__
复制代码

作者: huang6894    时间: 2014-09-08 21:09
回复 5# stanley_tam


    大神,我觉得你写的话,应该写最基础那些写法{:2_176:}
作者: acguitar    时间: 2014-09-08 21:26
回复 3# huang6894
哈哈,谢谢,但是根据自己的题目看代码是不是会学的快点噢。

   
作者: acguitar    时间: 2014-09-08 21:28
本帖最后由 acguitar 于 2014-09-08 21:35 编辑

回复 5# stanley_tam
赞一个,太感谢啦。。。嘿嘿,不过好像两个题写反了。


   
作者: stanley_tam    时间: 2014-09-08 23:24
第二个应该很基础了吧,都是核心库{:3_201:} 回复 6# huang6894


   
作者: huang6894    时间: 2014-09-09 09:01
本帖最后由 huang6894 于 2014-09-09 09:35 编辑

..................
不好意思,我其实写了一个每行都有注释的。。。可是忘记贴代码就rm掉了。。。就不重写了。。。。

第一题你去看看@ARGV、句柄;
第二题你去了解一下split、[^\w]+、数组和$#数组名。。。。

就可以了
作者: 林间笑客    时间: 2014-09-10 09:02
回复 5# stanley_tam


    我看这个就不是很合适楼主了
作者: pitonas    时间: 2014-09-10 12:41
我做开发几年,动辄一个项目代码也要超过百万行规模了。
不过好像两个题都不会写

头好晕, 今天突然一看代码头就晕了~ {:2_176:}
作者: pitonas    时间: 2014-09-10 17:34
举个栗子吧, 我做开发几年,动辄一个项目代码也要超过百万行规模了。
你知道吗?呵呵。总而言之, 没用过什么核心库。

啥是核心库? 谁看得懂呢? {:2_168:}

回复 9# stanley_tam


   
作者: acguitar    时间: 2014-09-11 11:10
啊啊。。。是删掉啦么? 哎哎,真心头痛时间太急了,没时间看书诶。看书太慢了。


   




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2