【发布时间】:2010-10-18 22:24:27
【问题描述】:
我编写的函数有问题...
sub TemplateReplace
{
my($regex, $replacement, $text) = @_;
$text =~ s/($regex)/($replacement)/gs;
}
my $text = "This is a test.";
TemplateReplace("test", "banana", $text);
但它不起作用。我认为参数是在 Perl 中通过引用发送的。 my($regex, $replacement, $text) = @_; 行会复制它们吗?我该如何解决这个问题?
【问题讨论】:
-
在我们弄清楚如何解决它之前,您必须解释您想要发生的事情。您想更改原始变量,还是获取显示修改的新字符串?这是Chas之间的区别。和阿德南的答案。 :)
-
如果您想神奇地编辑传递的参数,那么 Chas 的答案就是您要寻找的答案。如果您宁愿以“正确的方式”来做,请遵循 Adnan 的做法。从远处改变变量通常是不受欢迎的,它通常只会增加复杂性而没有什么好处。
标签: perl function pass-by-reference