Perl编程技巧与实例解析

52、使用Perl语言,利用智能匹配运算符,判断用户输入的一个模式是否能匹配给定数组 @array = qw(Fred Wilma Barney Betty Larry Pebbles Bamm - Bamm) 中的至少一个元素

以下是实现该功能的Perl代码:

#!/usr/bin/perl
use 5.10.1;

my @array = qw(Fred Wilma Barney Betty Larry Pebbles Bamm-Bamm);
print "The elements are (", join(" ", @array), ")\nEnter a pattern:\n";
chomp(my $pattern = <STDIN>);

if ($pattern ~~ @array) {
    print "At least one element matches\n";
} else {
    print "No element matches\n";
}

上述代码会提示用户输入一个模式,然后使用智能匹配运算符 ~~ 判断该模式是否能匹配数组中的至少一个元素,并输出相应的结果。

53、使用Perl语言,设置环境变量 TZ 为太平洋时区(不同系统可能不同,如 PST8PDT 或 US/Pacific),然后执行 date 命令

在不同系统下的实现代码如下:

在部分系统使用 PST8PDT 时:

#!/usr/bin/perl
use strict;
use warnings;
$ENV{TZ} = 'PST8PDT';
exec 'date';

在 Mac OS X 系统使用 US/Pacific 时:

#!/usr/bin/perl
use strict;
use warnings;
$ENV{TZ} = 'US/Pacific';
exec 'date';

54、编写一个程序,设置环境变量 TZ 然后执行 date 命令。

在不同系统上的示例代码如下:

在部分系统上使用 'PST8PDT' 作为 TZ 值:

#!/usr/bin/perl
use strict;
use warnings;
$ENV{TZ} = 'PST8PDT';
exec 'date';

在 Mac OS X 系统上使用 'US/Pacific' 作为 TZ 值:

#!/usr/bin/perl
use strict;
use warnings;
$ENV{TZ} = 'US/Pacific';
exec 'date';

55、编写一个程序,打印所有环境变量。然后将其转换为 CGI 程序。

打印所有环境变量的程序:

```perl
#!/usr/bin/perl
foreach my $key ( sort keys %ENV ) {
    printf "%-30s %s\n", $key, $ENV{$key};
}

转换为 CGI 程序:

#!/usr/bin/perl
print "Content-type: text/plain\n\n";
foreach my $key ( sort keys %ENV ) {
    printf "%-30s %s\n", $key, $ENV{$key};
}

##56、使用带管道的 open 函数而非反引号编写一个程序,实现统计当前目录下文件列表中每个用户和每个用户组出现的次数。
该程序使用 `open` 函数,将命令作为文件名,并在文件名后加上管道`"|"。由于管道在命令之后,就可以从这个文件句柄中读取内容。在 `while` 循环中使用该文件句柄逐行读取。程序如下:

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

open my $ls, '-|', 'ls', '-l'; # 三参数及以上形式
my( %users, %groups );

while( <$ls> ) {
    next if /^total/;
    my( $perm, $n, $user, $group ) = split;
    $users{$user}++;
    $groups{$group}++;
}

foreach my $user ( sort keys %users ) {
    print
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值