《Perl语言入门》第四版习题(13)

 1. [10]写一个程序,读入一串数字,将它们按照数字排序,将结果按右对齐的列打印出来。使用下面的数据进行检测:
17 000 04 1.50 3.14159 -10 1.5 4 2001 90210 666
2. [15]写一个程序,将下例hash 数据根据姓(last name)按照大小写无关的字母顺序进行排序,并把结果打印出来。当
last name 相同时,再按照名(first name)排序(不用关心大小写)。因此,第一个输出的的名字是Fred’s,最后一个是
Betty’s。具有相同family name 名字在一起。不要改变数据。输出名字的大小写应当和这里的一样。
my %last_name = qw{
fred flintstoneWilma Flintstone Barney Rubble
betty rubble Bamm-Bamm Rubble PEBBLES FLINTSONE
};
3. [15]写一个程序,查找给定子串在给定字符串中出现的每一个位置,输出子串出现的位置。例如,给定字符串为“This is
a test.”给定子串为“is”,它应当输出2 和5。如果子串是“a”,它应当输出8。如果子串为“t”呢?

 

1、

#! /usr/bin/env perl -w
use strict;
@_=(17,000,04,1.50,3.14159,-10,1.5,4,2001,90210,666);
@_=sort {$a<=>$b}@_;
for (@_)
{
    $_=sprintf "%8s/n",$_;
    print ;
}

 

2、

#! /usr/bin/env perl -w
use strict;
my @keys = sort {
      "/L$last_name{$a}" cmp "/L$last_name{$b}"  # by last name
       or
      "/L$a" cmp "/L$b"                          # by first name
    } keys %last_name;
    foreach (@keys) {
      print "$last_name{$_}, $_/n";              # Rubble,Bamm-Bamm
    }


3、

#! /usr/bin/env perl -w
use strict;
my $a="This is a test";
my $b="a";
my $c=-2;
while ($c+1)
{$c=index($a,$b,$c+1);
    print "$c/n";}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值