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