2017-08-01 102 views
-1

的参数我有一个数组我的数据。我需要一个数组值传递给函数ars_CreateEntryARSperl。 阵列根据收到的输入动态形成,因此其长度可能会有所不同。如何每个元素传递一个列表的功能

#!/usr/bin/perl 

use strict; 

use ARS; 
use ARS::Login; 

my $server = '125.10.14.1'; 
my $username = 'RemedyUser'; 
my $dbsid = $ENV{'ORACLEID'}; 
my $dbuser = 'admin'; 
my $schema = 'Form 1'; 

my $control = remedyars_login($username) 
     or die "ERROR: Cannot login to $server \n"; 
my $dbh = remedydbi_login($dbsid, $dbuser) 
     or die("Cannot connect to $dbsid: $DBI::errstr\n"); 

my @arr = (1, "New", 2, "Test", 3, "Hi"); 
my $created_ticket = ars_CreateEntry($control, $schema, join(",", @arr)) 
     or die "ERROR: Cannot create host ticket: $ars_errstr\n"; 

ars_Logoff($control); 

当我运行该脚本,我得到这个错误

ERROR: Cannot create host ticket: [ERROR] Invalid number of arguments (ARERR #80000)

+0

为什么要将数组转换为字符串(使用'join')?也许你需要传递一个对数组的引用? –

+2

从阅读文档,它看起来像你只需要在'@通过arr'原样......虽然在它的数字可能不正确 –

回答

2

使用阵列直接(见ars_CreateEntry examples):

my @arr=(1,"New",2,"Test",3,"Hi"); 
die unless @arr % 2 == 0; # enforce even number of elements in @arr 
my $created_ticket=ars_CreateEntry($control, $schema, @arr) 
    or die "ERROR: Cannot create host ticket: $ars_errstr\n"; 

甚至更​​好使用哈希代替阵列如果ars_CreateEntry是不挑剔顺序的参数:

相关问题