首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >获得单个元素数组的perl eval

获得单个元素数组的perl eval
EN

Stack Overflow用户
提问于 2015-04-30 15:24:13
回答 2查看 312关注 0票数 2

我试图弄清楚如何使用perl的eval来获得单个元素数组。到目前为止,我已经:

代码语言:javascript
运行
复制
use strict;
use warnings;
use Data::Dumper;

sub printit
{
    my $param = shift;
    my $thing = eval $param;
    if (ref($thing) =~ /HASH/ || ref($thing) =~ /ARRAY/) {
        print Dumper \$thing;
    } else {
        print $param . "\n";
    }
}
my $ip = "192.168.1.100";
my $ip_array = "[192.168.1.100]";
my $ip_array2 = "[192.168.1.100,]";
my $string = "{ a => 1, b => 2, c => 3}";
my $another_string = "[1, 2, 3 ]";

printit($ip);
printit($string);
printit($another_string);
printit($ip_array);
printit($ip_array2);

我的输出看起来是:

代码语言:javascript
运行
复制
[user]$ perl ~/tmp/cast.pl 
192.168.1.100
$VAR1 = \{
            'c' => 3,
            'a' => 1,
            'b' => 2
          };
$VAR1 = \[
            1,
            2,
            3
          ];
$VAR1 = \[
            "\x{c0}\x{a8}d"
          ];
$VAR1 = \[
            "\x{c0}\x{a8}d"
          ];

我想我得到了最后两个打印输出的标量引用,但是我想要一个数组,其中只有一个元素,如下所示:

代码语言:javascript
运行
复制
$VAR1 = \[
            "192.168.1.100"
          ];
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-30 15:29:21

eval "[192.168.1.100]"是数组引用,而不是标量引用。数组引用包含一个元素,但它不是您可能预期的字符串"192.168.1.100",因为没有引用192.168.1.100。相反,您正在创建http://perldoc.perl.org/perldata.html#Version-Strings 192.168.1.100

修正是在输入中包含一个引号或引号运算符。

代码语言:javascript
运行
复制
my $ip_array = "['192.168.1.100']";
my $ip_array2 = "[qq/192.168.1.100/,]";

参见历法中的"Version“。

票数 5
EN

Stack Overflow用户

发布于 2015-04-30 16:15:12

你说你想

代码语言:javascript
运行
复制
[ "192.168.1.100" ]

但是您传递给Perl的代码是

代码语言:javascript
运行
复制
[ 192.168.1.100 ]

那是非常不同的。

  • "192.168.1.100"创建13个字符的字符串192.168.1.100.
  • 192.168.1.100v192.168.1.100的缩写,它创建与chr(192).chr(168).chr(1).chr(100)相同的4个字符字符串。

写你想要的东西的许多方法之一:

代码语言:javascript
运行
复制
my $ip_array = '["192.168.1.100"]';
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29971697

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档