77范文网 - 专业文章范例文档资料分享平台

Perl语言入门(第四版)习题答案(4)

来源:网络收集 时间:2019-01-07 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

}

------------------------------------------------/home/confish/perl/crw

2、写一个程序,找出命令行中存在时间最长的文件名,并报告其天数。当参数为空时,其

行为如何(例如,命令行中没有输入任何的文件)? ------------------------------------------------/home/confish/perl/et #!/usr/bin/perl -w

#to check the longest exits file #confish@ubuntu7.10 if(@ARGV) {

foreach(@ARGV) {

if(-M>$such) {

$such=-M; $file=$_; } }

print\ } else {

print \ }

------------------------------------------------/home/confish/perl/et

12.14 练习

1、写一个程序要求用户输入一个目录名,再改变到那个目录去。如果用户输入的值是空白,

则转变到他/她的主目录去。改变后,将这个目录下的普通内容(不包括有点(. )开头的项)按照字母顺序列出来。(提示:使用目录句柄还是 glob 更方便?)如果没有成功改变目录,提示用户,但不要尝试输出目录里的内容。 #! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex12_1

if (@ARGV) {

chdir $ARGV[0]; }else{

chdir \@_=glob '*'; print @_;

2、修改程序,使之包含所有的文件,不仅仅是那些不以点( . ) 开头的文件。

#! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex12_1

if (@ARGV) {

chdir $ARGV[0]; }else{

chdir \@_=glob '.* *'; print @_;

3、如果你在前面的练习中使用的是目录句柄,使用 glob 重写它。如果使用的是 glob ,

则用目录句柄重写。 #! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex12_3

print \ chomp(my $dir = );

if ($dir =~ /^\\s*$/) { # A blank line chdir or die \ $!\ } else {

chdir $dir or die \ }

opendir DOT, \ foreach (sort readdir DOT) {

# next if /^\\./; ## if we were skipping dot files print \}

4、写一个类似于 rm 的程序,删除命令行中出现的任何文件。(不需要处理像 rm 中的选

项)

#! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex12_4

#类似于rm 的程序 for (@ARGV) { unlink $_;}

5、写一个类似于 mv 的程序,将命令行中的第一个参数重命名为第二个参数。(不需要处

理像 mv 中的选项,或别的参数。)允许它是一个目录;如果是,使用相同的基本名字

(basename) ,生成新的目录。 #! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex12_5

#类似于mv 的程序

rename $ARGV[0],$ARGV[1];

6、如果你的操作系统支持,写一个类似于 ln 的程序,能建立命令行中第一个参数的硬连

接(hard link) 到第二个参数。(不需要处理 ln 的选项,或者更多的参数。)如果系统没有硬连接,那么输出一条消息,指出如果可行你将进行的操作。

提示:这个程序和前面的有类似的地方,注意到这一点能节约你编码的时间。 #! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex12_5

#类似于ln 的程序

link $ARGV[0],$ARGV[1]or warn \

7、如果你的操作系统支持,修改上一个练习的程序,使之支持– s 选项(在别的参数前

面),来表明你想创建一个软连接(soft link)而非(hard link) 。( 甚至在你没有硬连接的情况,你也有可能能创建软连接。) #! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex12_5

#类似于ln -s的程序

symlink $ARGV[0],$ARGV[1]or warn \

8、如果你的操作系统支持,写一个程序来查找当前目录下的符号连接(symbolic links),

并将它们的值打印出来(如 ls– l 一样:name - > value )。 #!/usr/bin/perl -w use strict;

unless(@ARGV){ die \}

my @file=glob \foreach(@file){ chomp $_; my $link=readlink \ if(defined $link){print \}

@a=`ls -l|grep -e ‘->’`;

13.5 练习

1、写一个程序,读入一串数字,将它们按照数字排序,将结果按右对齐的列打印出来。使

用下面的数据进行检测:

17 000 04 1.50 3.14159 - 10 1.5 4 2001 90210 666 #! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex13_1

#读入一串数字,将它们按照数字排序,将结果按右对齐的列打印出来 @_=(17,000,04,1.50,3.14159,-10,1.5,4,2001,90210,666); @_=sort {$a<=>$b}@_; for (@_) {

$_=sprintf \ print ; }

2、写一个程序,将下例 hash 数据根据姓(last name )按照大小写无关的字母顺序进行排

序,并把结果打印出来。当last name 相同时,再按照名(firs t name) 排序(不用关心大小写)。因此,第一个输出的的名字是 Fred`s,最后一个是Betty`s。具有相同 family name 名字在一起。不要改变数据。输出名字的大小写应当和这里的一样。 my %last_name = qw{

fred flintstone Wilma Flintstone Barney Rubble

betty rubble Bamm- Bamm Rubble PEBBLES FLINTSONE };

#! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex13_2 #

my @keys = sort {

\ # by last name or

\ # by first name } keys %last_name; foreach (@keys) {

print \ # Rubble,Bamm-Bamm }

3、写一个程序,查找给定子串在给定字符串中出现的每一个位置,输出子串出现的位置。

例如,给定字符串为“This isa test . ”给定子串为“is” , 它应当输出2和5。如果子串是“ a ”,它应当输出8。如果子串为“t”呢?

#! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex13_3

#查找给定子串在给定字符串中出现的每一个位置,输出子串出现的位置 my $a=\my $b=\my $c=-2; while ($c+1) {

$c=index($a,$b,$c+1); print \}

14.8 练习

1、写一个程序可以转到某个特定的(写入代码中的)目录,如系统的根目录,再执行 ls –

l 得到那个目录的目录列表。(如果你的是 non- Unix 系统,使用你自己的系统命令,得到那个目录的详细列表) #! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex14_1

#程序可以转到某个特定的目录,再执行ls –l 得到目录列表 chdir \system \

2、修改第一题的程序,将结果输出到当前目录的文件 ls.out 中。错误的结果输出到文件

ls.err 中。(你不需要做任何特殊的事,这两个文件中的任意一个都可能是空的。) #! /usr/bin/env perl -w use strict;

#Date:2005-05-31 #ex14_1

#将结果输出到当前目录的文件ls.out 中。错误的结果输出到文件ls.err 中 chdir \

open LOG,\open STDERR,\my $d= `dir`; print LOG\

3、写一个程序能解析 date 命令的输出,判断当前日期是一个星期的第几天。如果是

weekday(周一至周五),则输出get to work ;否则,输出 go play。date 命令的输出如果是由 Mon 开头,则指星期一。如果你的 non- Unix 系统没有date 命令,则伪造一个程序使之可以输出像 date 命令那样的结果。我们这里给你提供一个两行的程序,如果你答应不

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库Perl语言入门(第四版)习题答案(4)在线全文阅读。

Perl语言入门(第四版)习题答案(4).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/zonghe/407590.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: