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

3 regex perl

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

$\=$/;map{
    $_=<>;print 0+s/[aeiou]//gi
}1..<>
Run Code Online (Sandbox Code Playgroud)

ike*_*ami 9

$\=$/;perl的意思是什么?

设置$\为的值$/.

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

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

所以,假设$/没有改变,它设置$\为换行,这print就像行为一样say.

谁可以逐行解码这个程序?

  1. 在全球范围内print采取行动say.
  2. 从中读取一行ARGV.
  3. 等于读数的次数,
    1. 从中读取一行ARGV.
    2. 使用s/[aeiou]//gi计数元音数量.
    3. 打印结果.

在标量上下文中,s///g返回匹配/替换的数量.0+强制标量上下文.


顺便说一句,tr/aeiouAEIOU//会更快0+s/[aeiou]//gi,而不是更快.它也是非破坏性的.