2017-02-02 3 views
0

У меня есть одна функция, которую я не могу изменить, и в этой функции что-то вроде это делаетсяPerl Динамический аргумент функции

foreach my $param (@_) { 
    ..... 

Теперь я хочу, чтобы вызвать эту функцию с динамическими параметрами. У меня есть объект, который я получаю от

$self->{'parameter'} = from_json ($self->{'cgi'}->param('POSTDATA')); 

А теперь я хочу сделать что-то вроде этого

function(para1, $self->{'parameter'}) 

, если я делаю это вручную, работает

function(para1, 1, 1, 1) 

Как можно Я делаю это?

ответ

1

Если $self->{parameter} является ссылкой на массив, то вы можете включить массив разыменованных объектов и в большинстве случаев * случаях Perl сгладит список.

$self = from_json ...;     # $self->{parameter} = [1,2,3]; 
function($p1,@{$self->{parameter}}); # equiv to function($p1,1,2,3) 

* - некоторые случаи, когда Perl не сплющивается список являются functions that have a @ prototype или Perl builtin function that expects an ARRAY, а не просто LIST

+0

Спасибо! После первого теста, похоже, все идет так, как вы сказали –

+0

Один вопрос. Есть ли разница в написании $ self -> {'parameter'} и $ self -> {parameter} без ''? –

+0

Это только вопрос стиля. – ikegami

 Смежные вопросы

  • Нет связанных вопросов^_^