}
------------------------------------------------/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)在线全文阅读。
相关推荐: