【问题标题】:What does "$\=$/;" mean in perl?"$\=$/;" 是什么意思在perl中是什么意思?
【发布时间】:2018-03-05 17:59:22
【问题描述】:

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

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

【问题讨论】:

  • 这是对map的误用,应该使用普通的for循环:print &lt;&gt; =~ tr/aeiouAEIOU//, "\n" for 1 .. &lt;&gt;。我不知道这是否更容易理解。

标签: regex perl


【解决方案1】:

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

$\ 设置为$/ 的值。

$/ 定义以readline (&lt;&gt;) 结尾的行。默认是换行符 (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 快,而且不会再快了。它也是非破坏性的。

【讨论】:

  • 非常感谢先生。还有一件事,地图末尾的1..&lt;&gt; 是什么意思?
  • 从 ARGV 读取一行。创建一个从 1 到读取的数字的数字列表。
猜你喜欢
  • 2010-12-28
  • 2020-05-21
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 2011-08-12
  • 2017-06-11
  • 2023-03-27
  • 1970-01-01
相关资源
最近更新 更多