Как я могу хранить все содержимое массива Perl в скалярной переменной? - PullRequest
0 голосов
/ 25 января 2010

Как я могу хранить все содержимое массива в скалярной переменной. например:

my $code = do { local $/; <FILE HANDLE>; };

Это отлично работает для файловых дескрипторов, но мне нужно это для массива.

Ответы [ 4 ]

13 голосов
/ 25 января 2010

Использование join.

my $str = join '', @array;
5 голосов
/ 25 января 2010

Вы также можете взять ссылку на массив:

my @array = 'a'..'z';

my $scalar = \@array;

foo( $scalar );

sub foo {
    my $array_ref = shift;

    for my $f ( @$array_ref ) {

       do_something( $f ); 

    }
}

Какой подход вы действительно выберете, зависит от того, чего вы пытаетесь достичь.

1 голос
/ 25 января 2010

@arr = ("1","2","3") ;
my $arr = "@arr" ;
print "$arr";
0 голосов
/ 25 января 2010

Вы можете использовать скалярную переменную в качестве дескриптора файла:

my $bigbuffer;
my $f;
open $f, ">", \$bigbuffer; # opens $f for writing into the variable $bigbuffer
# do whatever prints fwrites etc you want here
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...