Chinaunix

标题: perl 命令行参数求教 [打印本页]

作者: sunzhiguolu    时间: 2016-12-20 18:18
标题: perl 命令行参数求教
本帖最后由 sunzhiguolu 于 2016-12-20 18:23 编辑

perl 的命令行参数 -l (字母 L 的小写形式), 对于段落文本的处理 读取目标文本前以及处理后输出时都进行了哪些工作?
比如测试文本如下:
A
B
C

D
E
F

G
H
I

代码如下:
  1. perl -00ple 's/\n/\t/g' f
复制代码
我的期望输出是这样的:
A       B       C
D       E       F
G       H       I

但是实际的输出结果是这样的:
A       B       C

D       E       F

G       H       I

这个 -l 参数实在难以把握, 哪位大神帮忙指点一下。 谢谢。。。







作者: zhouzhen1    时间: 2016-12-20 21:35
关于Perl命令行参数不清楚的都可以去看perlrun这个文档。

对于你这个问题,值得注意的是-l在时候会把$/设置为$\。你用了paragraph mode所以按理$/为空字符串,但是这个有点特殊,因为实际产生作用的terminator显然不可能是一个空字符,而相应的$\也并不是空串。

我们可以看一下,
  1. $ perl -00ple 'print "s$\e"; s/\n/|/g' f
  2. s

  3. e

  4. A|B|C

  5. s

  6. e

  7. D|E|F

  8. s

  9. e

  10. G|H|I
复制代码


可见$\实为两个换行。

为达到你的预期,一个workaround的办法是自己设置一下$\
  1. $ perl -00ple '$\="\n"; s/\n/|/g' f
  2. A|B|C
  3. D|E|F
  4. G|H|I
复制代码

作者: sunzhiguolu    时间: 2016-12-21 16:47
我只想说您分析的非常透彻,讲解的好详细。 非常感谢帮助。。。




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2