Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl 如何将数组传递给函数并返回值_Perl - Fatal编程技术网

Perl 如何将数组传递给函数并返回值

Perl 如何将数组传递给函数并返回值,perl,Perl,下面是我正在处理的一段较大代码的代码片段,在我尝试引用函数@$instanceObjectEnrichment[0]中的数组时,不断出现此错误 my @providerCloudEnrichment=("Core","Gen-i WAN Services","Physical Provider Connectivity","TEMPLATE"); createAndEnrichInstance($parentClass,$session,$object,@providerCloudEnrichm

下面是我正在处理的一段较大代码的代码片段,在我尝试引用函数@$instanceObjectEnrichment[0]中的数组时,不断出现此错误

my @providerCloudEnrichment=("Core","Gen-i WAN Services","Physical Provider Connectivity","TEMPLATE");
createAndEnrichInstance($parentClass,$session,$object,@providerCloudEnrichment);

sub createAndEnrichInstance {

        my ($creationClassName,$session,$instanceObjectString,$instanceObjectEnrichment)=@_;
        if(!($session->instanceExists($instanceObjectString))){
                $session->create($instanceObjectString);
        }
        my $instanceObject=$session->object($instanceObjectString);
        print("i am here  ".@$instanceObjectEnrichment[0]."\n");
        if($creationClassName eq 'ProviderCloud'){
                $instanceObject->put(Model =>"@$instanceObjectEnrichment[0]",Vendor =>"@$instanceObjectEnrichment[1]",Description =>"@$instanceObjectEnrichment[2]",Certification => "@$instanceObjectEnrichment[3]");
        }
        elsif($creationClassName eq 'Interface'){
                $instanceObject->put(Model =>@$instanceObjectEnrichment[0],Vendor =>@$instanceObjectEnrichment[1],Description=>@$instanceObjectEnrichment[2],DisplayName=>@$instanceObjectEnrichment[3],DeviceID=>@$instanceObjectEnrichment[4]);
        }
        else {
                print ("Incorrect Class");
        }
}
错误

在createUserDefinedConnections.pl第149行和第326行使用“strict refs”时,不能将字符串(“Core”)用作数组引用。

您应该将其作为数组引用传递:

createAndEnrichInstance($parentClass,$session,$object,\@providerCloudEnrichment);
这个

相当于:

createAndEnrichInstance($parentClass,$session,$object,"Core","Gen-i WAN Services","Physical Provider Connectivity","TEMPLATE")
此外,由于它是数组引用,因此可以更改

@$instanceObjectEnrichment[0]
将是:

$instanceObjectEnrichment->[0]

您应该将其作为数组引用传递:

createAndEnrichInstance($parentClass,$session,$object,\@providerCloudEnrichment);
这个

相当于:

createAndEnrichInstance($parentClass,$session,$object,"Core","Gen-i WAN Services","Physical Provider Connectivity","TEMPLATE")
此外,由于它是数组引用,因此可以更改

@$instanceObjectEnrichment[0]
将是:

$instanceObjectEnrichment->[0]

引用传递给数组,或创建异常数组并传递引用

#/usr/bin/env perl
严格使用;
使用警告;
打印“第一种方法:传递对数组的引用”,
“使用反斜杠运算符:\n”;
我的@words=(“实用”、“提取和”、“报告”、“语言”);
打印文字(\@文字);
打印“\n第二种方法:传递对匿名数组的引用:\n”;
我的$words_ref=[“实用”、“提取和”、“报告”、“语言”];
打印单词($words\u ref);
子打印字{
我的($words\u ref)=@;
对于(0..$#$words\u ref){
打印“$”、$words\u ref->[$”、“\n”;
}
}
预期输出:

第一种方法:使用反斜杠操作符传递对数组的引用:
0实用的
1.提取和
2.报告
3.语言
第二种方法:将引用传递给匿名数组:
0实用的
1.提取和
2.报告
3.语言

引用传递给数组,或创建异常数组并传递引用

#/usr/bin/env perl
严格使用;
使用警告;
打印“第一种方法:传递对数组的引用”,
“使用反斜杠运算符:\n”;
我的@words=(“实用”、“提取和”、“报告”、“语言”);
打印文字(\@文字);
打印“\n第二种方法:传递对匿名数组的引用:\n”;
我的$words_ref=[“实用”、“提取和”、“报告”、“语言”];
打印单词($words\u ref);
子打印字{
我的($words\u ref)=@;
对于(0..$#$words\u ref){
打印“$”、$words\u ref->[$”、“\n”;
}
}
预期输出:

第一种方法:使用反斜杠操作符传递对数组的引用:
0实用的
1.提取和
2.报告
3.语言
第二种方法:将引用传递给匿名数组:
0实用的
1.提取和
2.报告
3.语言