
Perl 小骆驼书中下面的这个例子, 作用是怎样的?foreach循环里匹配的是什么内容?
#!/usr/bin/perl-w@lines=system'perldoc-u-fatan2';foreach(@lines){s/\w<([^>]+)>/\U$1/g...
#! /usr/bin/perl -w
@lines = system 'perldoc -u -f atan2';
foreach (@lines){
s/\w<([^>]+)>/\U$1/g;
print;
} 展开
@lines = system 'perldoc -u -f atan2';
foreach (@lines){
s/\w<([^>]+)>/\U$1/g;
print;
} 展开
2个回答
展开全部
perldoc -u -f atan2
是perldoc 命令行 ,可以得到 perl 中atan2 函数的说明
system 是在perl 中调用这个命令行,反引号也可以实现同样的功能
然后把得到的内容放到数组
然后 正则替换内容, \w 代表一个数字、字母或下划线
匹配 以一个\w 开头,被<>括起来的内容 ,后面的 $1 代表的是前面括号括起来的内容,\U 代表大写,g代表 全部替换;
就是 像 X<atan2> 会被替换为 ATAN2
是perldoc 命令行 ,可以得到 perl 中atan2 函数的说明
system 是在perl 中调用这个命令行,反引号也可以实现同样的功能
然后把得到的内容放到数组
然后 正则替换内容, \w 代表一个数字、字母或下划线
匹配 以一个\w 开头,被<>括起来的内容 ,后面的 $1 代表的是前面括号括起来的内容,\U 代表大写,g代表 全部替换;
就是 像 X<atan2> 会被替换为 ATAN2
更多追问追答
追问
谢谢。
请问 [^>]+ 匹配到的是什么内容?
追答
中括号中的是字符集
[>] 代表字符 > , [^>] 代表除 > 的所有字符
+ 代表之前的字符有一个或多个
所以,[^>]+ 匹配的就是 一个或多个非>字符
展开全部
第一行是#!这一行,#!行和程序的可移植性相关,需要找到每台机器的存放地点。幸运的是,通常都被放在/usr/bin/perl 或/usr/local/bin/perl 中。
第二行运行了一个外部命令,由` `括起来了。(反引号` 通常在美式键盘数字1 的左边。不要和单引号‘混淆了。)我们用的命令的是perldoc –u –f atan2;在命令行输入这个命令,看看能得到什么结果。perldoc 这个命令能在大多数机器中使用,它显示相关的文档。◆这个命令告诉你一些关于反正切函数atan2 的信息;在这里我们把它做为一个外部命令,并处理它
的输出信息。
反引号内的命令的输出被保存在@lines 中。下一行是一个循环,它依行处理@lines 中的信息。循环内语句是缩进的。虽然Perl 并不需要这样,当这是好的编程习惯。
循环内的第一行让人惊慌;它是s//w<([^>]+)>//U$1/g;这里不过多的讨论细节,我们只提示下,它能改变有特殊标记(<>)的行,在每一perldoc 这个命令的输出中,都至少有一行具有这样的形式。
下一行,令人惊奇的是,它输出每一行(可能是修改过的)。输出的结果和perldoc –u –f atan2 类似,但标记(<>)内的内容有些不同。
正则替换内容, \w 代表一个数字、字母或下划线
匹配 以一个\w 开头,被<>括起来的内容 ,后面的 $1 代表的是前面括号括起来的内容,\U 代表大写,g代表 全部替换;
总结下,通过这几行程序,我们运行了另一个程序,把它的输出保存在内存中,修改内存中的数据,再把结果输出来。这种把数据从一种形式转换成另一种形式的程序在Perl 中很常见。
第二行运行了一个外部命令,由` `括起来了。(反引号` 通常在美式键盘数字1 的左边。不要和单引号‘混淆了。)我们用的命令的是perldoc –u –f atan2;在命令行输入这个命令,看看能得到什么结果。perldoc 这个命令能在大多数机器中使用,它显示相关的文档。◆这个命令告诉你一些关于反正切函数atan2 的信息;在这里我们把它做为一个外部命令,并处理它
的输出信息。
反引号内的命令的输出被保存在@lines 中。下一行是一个循环,它依行处理@lines 中的信息。循环内语句是缩进的。虽然Perl 并不需要这样,当这是好的编程习惯。
循环内的第一行让人惊慌;它是s//w<([^>]+)>//U$1/g;这里不过多的讨论细节,我们只提示下,它能改变有特殊标记(<>)的行,在每一perldoc 这个命令的输出中,都至少有一行具有这样的形式。
下一行,令人惊奇的是,它输出每一行(可能是修改过的)。输出的结果和perldoc –u –f atan2 类似,但标记(<>)内的内容有些不同。
正则替换内容, \w 代表一个数字、字母或下划线
匹配 以一个\w 开头,被<>括起来的内容 ,后面的 $1 代表的是前面括号括起来的内容,\U 代表大写,g代表 全部替换;
总结下,通过这几行程序,我们运行了另一个程序,把它的输出保存在内存中,修改内存中的数据,再把结果输出来。这种把数据从一种形式转换成另一种形式的程序在Perl 中很常见。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询