Class::Struct error: Can't locate object method

Class::Struct error: Can't locate object method

为了简化一些现有的工具,我想用一个结构体数组替换几个数组。 所以我做了一个简单的示例代码来测试结构的创建。使用的代码如下:

use strict;
use warnings;

#package Net_Node;
use Class::Struct Net_Node => [host => '$', access => '$', pass => '$'];
#struct( host => '$', access => '$', user => '$', pass => '$' );

my $example = new Net_Node;

$example->host('dir ip');
$example->access('TELNET');
$example->user('hjack');
$example->pass('buttstalion');

print "\n\n\n";
print "${example->host}\n";
print "${example->access}\n";
print "${example->pass}\n";  

问题是当我尝试执行此脚本时,出现此错误:

Can't locate object method "host" via package "example" (perhaps you forgot to load "example"?) at test_2.pl line 15.

你能帮我看看我需要更正什么吗??

正在阅读 Class::Struct EXAMPLES,看来您需要调用 struct 函数:

use warnings;
use strict;
use Class::Struct;

struct(Net_Node => [host => '$', access => '$', pass => '$']);

my $example = Net_Node->new();

$example->host('dir ip');
$example->access('TELNET');
$example->pass('buttstalion');

print $example->host, "\n";
print $example->access, "\n";
print $example->pass, "\n";

这会打印:

dir ip
TELNET
buttstalion

此外,似乎 $example->host 不会在双引号内插入。

您的代码在结构访问器中存在错误,并且您在 Class::Struct 定义

中遗漏了 'user'
#!/usr/bin/env perl

use strict;
use warnings;
use feature 'say';

#package Net_Node;
use Class::Struct Net_Node => [host => '$', access => '$', user => '$', pass => '$'];
#struct( host => '$', access => '$', user => '$', pass => '$' );

my $example = new Net_Node;

$example->host('dir ip');
$example->access('TELNET');
$example->user('hjack');
$example->pass('buttstalion');

say "\n\n";
say $example->host;
say $example->access;
say $example->pass;

输出



dir ip
TELNET
buttstalion