Как преобразовать эту переменную в строку в Perl - PullRequest
0 голосов
/ 21 декабря 2011

Я использую класс Linux :: SysInfo, чтобы получить некоторую информацию об удаленной системе, при возврате переменная $ si (sysinfo) не в строковом формате, как можно было бы преобразовать ее вывод в строковый формат?

package Hello;
use Linux::SysInfo qw/sysinfo/;
sub hello {
my $si = sysinfo;
return SOAP::Data->name('result')->type('string')->value($si);
}
1;

В настоящее время я думаю, что он возвращает значение HASH, как говорит клиент:

Ожидается строковое значение вместо ссылки на HASH

Ответы [ 3 ]

4 голосов
/ 21 декабря 2011

Какое значение из sysinfo вас интересует? например, uptime может быть возвращено

return SOAP::Data->name('result')->type('string')->value($si->{uptime});

Если вы действительно хотите ВСЕМ информацию, то Data :: Dumper вполне может быть лучшим способом.

Для нескольких возвращаемых значений вы можете использовать Data :: Dumper:

use Data::Dumper;
...
return SOAP::Data->name('result')->type('string')->value(Dumper $si);

Или вы можете сохранить несколько значений в объекте SOAP :: Data с разными именами и вернуть его.

0 голосов
/ 21 декабря 2011

Гибкость легко достигается с помощью параметризации.

Передайте подчиненному элементу дополнительный параметр, чтобы решить, какое значение возвращать:

sub hello {

    my ( $wanted_param ) = @_;
    my $si = sysinfo;

    return SOAP::Data
             ->name( 'result' )
               ->type( 'string' )
                 ->value( $si->{$wanted} );
}

say hello 'uptime';    # Returns uptime value
say hello 'totalram';  # Returms totalram value
0 голосов
/ 21 декабря 2011

Используйте Data :: Dumper или JSON , чтобы получить данные в виде строки.

package Hello;
use Linux::SysInfo qw/sysinfo/;
use JSON;

sub hello {
    my $si = sysinfo;
    my $j = new JSON;
    return SOAP::Data->name('result')->type('string')->value($j->encode($si));
}

1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...