Perl 将结构成员传递给函数时打印它

Perl 将结构成员传递给函数时打印它,perl,Perl,我有这个结构 package StrukturaStudent; use Class::Struct; struct Student => { sifra => '$', ime => '$', prezime => '$', brojBodova => '$' }; 和功能 sub ispisiStudenta($st){ print $st->{sifra}." ". $st->{ime}." ". $st->{rezime}." ".

我有这个结构

package StrukturaStudent;
use Class::Struct;

struct Student => {
sifra => '$',
ime => '$',  
prezime => '$',
brojBodova => '$'
};
和功能

sub ispisiStudenta($st){
print $st->{sifra}." ". $st->{ime}." ". $st->{rezime}." ". $st->{brojBodova}."\n";
}
我想在其中打印当前学生

在另一个包中,我有一个学生数组,并将此函数称为

StrukturaStudent->ispisiStudenta(@lista[1])."\n";
我没有得到任何东西(只有控制台上的新空行)。 但是当我从main打电话给你的时候

print @lista[1]->ime;

我得到了我需要的东西。那么,如何从数组中传递一个学生并在函数中打印它呢?此外,如何传递整个数组并在for循环中打印其中的每个学生?

$st->{ime}
$st->ime
不同。第一个函数在散列引用中搜索一个键,第二个函数调用一个方法

您应该始终使用Class:Struct的方法,如中所示。此外,不能在Perl中声明命名参数:

sub ispisiStudenta {
    my $st = shift;
    print join(' ', $st->sifra, $st->ime, $st->rezime, $st->brojBodova), "\n";
}

$st->{ime}
$st->ime
不同。第一个函数在散列引用中搜索一个键,第二个函数调用一个方法

您应该始终使用Class:Struct的方法,如中所示。此外,不能在Perl中声明命名参数:

sub ispisiStudenta {
    my $st = shift;
    print join(' ', $st->sifra, $st->ime, $st->rezime, $st->brojBodova), "\n";
}

我尝试了上面的代码,但出现了这个错误,无法通过包“StrukturaStudent”找到对象方法“sifra”,请再次阅读文档$st应该是一个Student对象,而不是StrukturaStudenta。我尝试了上面的代码,但出现了此错误,无法通过包“StrukturaStudent”找到对象方法“sifra”,请再次阅读文档$st应该是学生对象,而不是StrukturaStudenta。