2013-07-08 138 views
0
  • 如何创建一个变量名称变量?例如$$ ref;
    here $ref="name1"; or $ref ="name2" ;Perl怀疑编码疑惑

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

  • 如果quotemeta是在一个字符串操作..能不能恢复到它以前 形式..?例如"hello\\nWorld\\\$" to "hello\nWorld\$.

+0

关于“如何能单独带引号的字符串转换成一个双引号字符串“:首先使用双引号。 – doubleDown

+0

@doubleDown我认为这更多的是关于“如何将未插入字符串转换为插入字符串”。看起来像某种模板系统的工作。 [String :: Format](https://metacpan.org/module/String:Format)也许? (还没有尝试过) – Dallaylaen

+0

@doubleDown想从OP得到更多的输入,但... – Dallaylaen

回答

4

如何与一个变量名称的变量创建?例如$$ ref;

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

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

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

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

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

如果你想要的是展开现有字符串中的变量the documentation is pretty clear about how to do it

如果quotemeta是在一个字符串操作..能不能恢复到它以前 形式..?

String::Unquotemeta

0
  1. 是。这就是所谓的符号引用,因为安全原因,不建议这样做。而且也很难调试。

  2. 是的。

    my $ text ='Hello \ n';

    (my $ interpretation = $ text)=〜s {\\ n} {\ n} gmsx;

    print''$ text'\ n“;

    print“'$ interpretation'\ n”;

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}; 
+0

*“你最终想达到什么目的?如果你提供了一些上下文。“* +1 – m0skit0