0
  • 如何创建具有变量名的变量?例如 $$ref;
    这里 $ref="name1"; or $ref ="name2" ;

  • 如何将单引号字符串转换为双引号字符串..?例如。
    'Hello\n'; to "Hello\n";

  • 如果quotemeta对字符串进行操作..可以将其恢复为以前的形式..吗?例如 "hello\\nWorld\\\$" to "hello\nWorld\$.

4

3 回答 3

4

如何创建具有变量名的变量?例如 $$ref;

使用单引号而不是双引号。

my $variableName = '$$ref';
print $variableName;

这不是很常见,很可能表明设计错误。问问自己为什么需要这个。

如何将单引号字符串转换为双引号字符串..?

这个问题对我来说毫无意义。字符串就是字符串,不管是单引号还是双引号。一旦创建,您不知道它是如何创建的。你想做什么?

如果您想要的是在现有字符串中扩展变量,那么文档非常清楚如何做到这一点

如果quotemeta对字符串进行操作..它可以恢复到以前的形式..?

String::Unquotemeta

于 2013-07-08T14:17:49.173 回答
1

你最终想要达到什么目的?如果您提供一些上下文,那么明智地回答会容易得多。

截至目前,第 1 部分要求使用散列而不是普通变量,除非您有充分理由不这样做:

#!/usr/bin/perl -w
use strict;
my %hash = ( name1 => 42, name2 => 3.14 );
my $key = (rand() < 0.5) ? "name1" : "name2";
print $hash{$key};
于 2013-07-08T15:27:10.053 回答
0
  1. 是的。这称为符号引用,出于安全原因不推荐使用。而且也很难调试。

  2. 是的。

    我的 $text = '你好\n';

    (我的 $interpreted = $text) =~ s{ \\n }{\n}gmsx;

    打印 "'$text'\n";

    print "'$解释'\n";

于 2013-07-08T14:51:20.597 回答