Может быть, вы можете попытаться восстановить свое рабочее пространство. Я не могу увидеть проблему с вышеупомянутым кодом.
Используйте map
:
#!/usr/bin/perl
use strict;
use warnings;
my @a = qw/ A B C /;
my @b;
my $text = join ' ', map { qq/"$_"/ } @a;
print "text for (@a) is [$text]\n";
$text = join ' ', map { qq/"$_"/ } @b;
print "text for (@b) is [$text]\n";
Также, чтобы сделать код чище, вы можете использовать qq //
operator (ведет себя точно так же, как ""
, но вы можете выбрать разделитель), чтобы избежать экранирования "
s.
Час. имеет правильный ответ, но иногда я использую переменную $ "
, которая содержит строку для вставки между элементами массива для интерполяции:
my $text = do { local $" = q<" ">; qq<"@array"> };
Я не уверен в использовании "соединения". Вы хотите одну скалярную строку с элементами в кавычках или просто массив с элементами в кавычках? Если последнее, то я подозреваю, что следующее сделает это
my @a = qw|a b c|;
@a = map {qq|"$_"|} @a;
. Конечно, это обходит проверку, были ли элементы процитированы первоначально. Если вы хотите, чтобы элементы массива цитировались для вставки в базу данных с использованием, например, DBI, то более подходящим способом может быть:
@a = map{$dbh->quote($_)} @a;
Надеюсь, это поможет
Возможно, это не совсем то, что вы просите, но я большой поклонник Data :: Dumper для такого рода вещей.