在使用lc函数时,在reg中无与伦比)

时间:2014-06-22 07:49:08

标签: perl lowercase

我正在尝试运行以下代码:

$lines = "Enjoyable )) DAY";
$lines =~ lc $lines;
print $lines;

它在第二行失败,我收到标题中提到的错误。我理解括号是造成麻烦的。我想我可以使用" quotemeta",但问题是我的字符串包含我以后继续处理的信息,所以我希望尽可能保持字符串的完整性并且不要篡改它得多。

2 个答案:

答案 0 :(得分:4)

这里有两个问题。

<强> 1。 =~用于执行一组特定的操作

=~运算符用于匹配//m//qr//或字符串;或者用s///tr///代替。

如果你想做的只是小写$lines的内容,那么你应该使用=而不是=~

$lines = "Enjoyable )) DAY";
$lines = lc $lines;
print $lines;

<强> 2。正则表达式具有必须转义的特殊字符

如果您想将$lines$Lines的小写版本匹配,如果$lines已经完全小写,则应该返回true,否则返回false,那么您需要逃避&#34;)&#34;字符。

#!/usr/bin/env perl

use strict;
use warnings;

my $lines = "enjoyable )) day";

if ($lines =~ lc quotemeta $lines) {
    print "lines is lower case\n";
}

print $lines;

请注意,这是一个试图找到执行$lines =~ lc $lines的原因的玩具示例 - 使用eq解决此问题会更好(更快,更安全),如$lines eq lc $lines。 / p>

有关quotemeta的详细信息,请参阅perldoc -f quotemetahttp://perldoc.perl.org/functions/quotemeta.html

答案 1 :(得分:0)

=〜用于正则表达式。 “lc”不是正则表达式的一部分,它是这样的函数:$ new = lc($ old);

我不记得小写的正则表达式运算符,因为我一直使用lc()。