什么是“$ \ = $ /;”在perl中意味着什么?

时间:2017-09-24 19:04:49

标签: regex perl

我遇到了一个perl程序,它计算字符串中元音的数量。但是我无法推断它是如何运作的。谁可以逐行解码这个程序?

$\=$/;map{
    $_=<>;print 0+s/[aeiou]//gi
}1..<>

1 个答案:

答案 0 :(得分:9)

  

$\=$/;在perl中的含义是什么?

$\设置为$/的值。

$/定义readline<>)的行尾结尾。它的默认值是换行符(U + 000A)。

$\附加到每个print的输出中。它的默认值是空字符串。

因此,假设$/未更改,则会将$\设置为换行符,这会使print的行为与say类似。

  

任何可以逐行解码此程序的人吗?

  1. 在全球范围内print行为say
  2. ARGV读取一行。
  3. 等于读取次数的次数,
    1. ARGV读取一行。
    2. 使用s/[aeiou]//gi计算元音数量。
    3. 打印结果。
  4. 在标量上下文中,s///g返回匹配/替换的数量。 0+强制标量上下文。

    顺便说一下,tr/aeiouAEIOU//会比0+s/[aeiou]//gi更快,而不再是\(.\)。它也是非破坏性的。