2

我有一个MyClass.pm带有非常基本的类定义的 Perl 模块文件。

use strict;
use warnings;

package MyClass;

sub new {
    my $this = shift;
    my $self = {};
    bless $self, $this;
    return $self;
}

sub displayChar{
    my $self = shift;
    my $char = shift;
    print $char . "\n";
}

1;

我还有一个myClass.pl创建 MyClass 实例的文件。

#!/usr/bin/perl
use strict;
use warnings;

use MyClass; 
my $myClass = MyClass->new();

$myClass->displayChar('a'); # This line works right

my @charArray = ('a', 'b', 'c');
map($myClass->displayChar, @charArray);

当我调用该displayChar方法时,它可以正常工作,但是当我尝试将 map 函数与该方法一起使用时,它给了我三次此错误(我猜是每个数组项一次):

Use of uninitialized value $char in concatenation (.) or string at MyClass.pm line 16.

我是否以错误的方式使用地图功能?或者也许不可能使用对象方法作为第一个参数?

4

1 回答 1

5

您需要将值传递给您的displayChar方法:

map($myClass->displayChar($_), @charArray);

map在本地将 $_ 变量设置为数组的每个值。

于 2016-11-02T15:16:51.280 回答