#! /usr/bin/perl
@lines= `perldoc –u –f atan2`;
foreach(@lines){
s//w<([^>]+)//U$1/g;
print;
}
第一行是#!这一行,#!行和程序的可移植性相关,需要找到每台机器的存放地点。幸运的是,通常都被放在/usr/bin/perl 或/usr/local/bin/perl 中。
如果不是这样,则需要找到你自己机器上perl 的存放地点,然后使用那个路径。在Unix 系统中,可能使用如下一行找到
perl:
#! /usr/bin/env perl
如果Perl 存放的路径不在你的搜索路径上,应当询问你的系统管理员或者某一个和你使用同一台机器的人。
在非Unix 系统中,传统上把第一行写做#!perl。
第二行运行了一个外部命令,由` `括起来了。(反引号` 通常在美式键盘数字1 的左边。不要和单引号‘混淆了。)我们用的命令的是perldoc
–u –f atan2;在命令行输入这个命令,看看能得到什么结果。perldoc 这个命令能在大多数机器中使用,
它显示相关的文档。◆这个命令告诉你一些关于反正切函数atan2 的信息;在这里我们把它做为一个外部命令,并处理它
的输出信息。
反引号内的命令的输出被保存在@lines 中。下一行是一个循环,它依行处理@lines 中的信息。循环内语句是缩进的。虽然
Perl 并不需要这样,当这是好的编程习惯。
循环内的第一行让人惊慌;它是s//w<([^>]+)>//U$1/g;这里不过多的讨论细节,我们只提示下,它能改变有特殊标记(<>)
的行,在每一perldoc 这个命令的输出中,都至少有一行具有这样的形式。
下一行,令人惊奇的是,它输出每一行(可能是修改过的)。输出的结果和perldoc –u –f atan2 类似,但标记(<>)内的内
容有些不同。
总结下,通过这几行程序,我们运行了另一个程序,把它的输出保存在内存中,修改内存中的数据,再把结果输出来。这
种把数据从一种形式转换成另一种形式的程序在Perl 中很常见。
反引号内的命令的输出被保存在@lines 中。下一行是一个循环,它依行处理@lines 中的信息。循环内语句是缩进的。虽然
Perl 并不需要这样,当这是好的编程习惯。
循环内的第一行让人惊慌;它是s//w<([^>]+)>//U$1/g;这里不过多的讨论细节,我们只提示下,它能改变有特殊标记(<>)
的行,在每一perldoc 这个命令的输出中,都至少有一行具有这样的形式。
下一行,令人惊奇的是,它输出每一行(可能是修改过的)。输出的结果和perldoc –u –f atan2 类似,但标记(<>)内的内
容有些不同。
总结下,通过这几行程序,我们运行了另一个程序,把它的输出保存在内存中,修改内存中的数据,再把结果输出来。这
种把数据从一种形式转换成另一种形式的程序在Perl 中很常见。