找回密码
 注册
查看: 3171|回复: 0

快速了解Perl

[复制链接]
发表于 2011-11-12 23:59:39 | 显示全部楼层 |阅读模式
想看一个有些意思的Perl 程序吗(如果不想,那随便看看)? 如下就是一个:
#! /usr/bin/perl
@lines= `perldoc –u –f atan2`;
foreach(@lines){
s/\w<([^>]+)/\U$1/g;
print;
}
当第一次看见这样的Perl 代码时,你可能觉得很奇怪。(事实上,每次你看到这样的Perl 代码时,都觉得它们奇怪)。让我
们一行一行的来学习它,看看这个例子完成了什么样的任务。(这些解释很简洁;这里只是大致的讲解。在本书的剩下章节,
我们将更加详细的讨论它们。现在并不假定你完全理解它,那是以后的事情。)
第一行是#!这一行,我们已经见过了。你也许要修改它,我们已经讨论过了。
第二行运行了一个外部命令,由` `括起来了。(反引号` 通常在美式键盘数字1 的左边。不要和单引号‘混淆了。)我们用
的命令的是perldoc –u –f atan2;在命令行输入这个命令,看看能得到什么结果。perldoc 这个命令能在大多数机器中使用,
它显示相关的文档◆。这个命令告诉你一些关于反正切函数atan2 的信息;在这里我们把它做为一个外部命令,并处理它
的输出信息。
◆如果perldoc 不能使用。那可能是因为你的系统没有命令行接口,你的Perl 不能通过反引号或piped-open(请查看chapter14)来运行命
令(如perldoc)。如果是这样的,应当跳过需要利用perldoc 的练习。
反引号内的命令的输出被保存在@lines 中。下一行是一个循环,它依行处理@lines 中的信息。循环内语句是缩进的。虽然
Perl 并不需要这样,当这是好的编程习惯。
循环内的第一行让人惊慌;它是s/\w<([^>]+)>/\U$1\g;这里不过多的讨论细节,我们只提示下,它能改变有特殊标记(<>)
的行,在每一perldoc 这个命令的输出中,都至少有一行具有这样的形式。
下一行,令人惊奇的是,它输出每一行(可能是修改过的)。输出的结果和perldoc –u –f atan2 类似,但标记(<>)内的内
容有些不同。
总结下,通过这几行程序,我们运行了另一个程序,把它的输出保存在内存中,修改内存中的数据,再把结果输出来。这
种把数据从一种形式转换成另一种形式的程序在Perl 中很常见。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|小黑屋|生物统计家园 网站价格

GMT+8, 2024-11-21 20:13 , Processed in 0.022293 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表