Как я произвожу каждый элемент массива Perl, окруженный в кавычках?

Может быть, вы можете попытаться восстановить свое рабочее пространство. Я не могу увидеть проблему с вышеупомянутым кодом.

6
задан Peter Mortensen 6 January 2010 в 20:13
поделиться

4 ответа

Используйте 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.

27
ответ дан 8 December 2019 в 03:02
поделиться

Час. имеет правильный ответ, но иногда я использую переменную $ ", которая содержит строку для вставки между элементами массива для интерполяции:

my $text = do { local $" = q<" ">; qq<"@array"> };
4
ответ дан 8 December 2019 в 03:02
поделиться

Я не уверен в использовании "соединения". Вы хотите одну скалярную строку с элементами в кавычках или просто массив с элементами в кавычках? Если последнее, то я подозреваю, что следующее сделает это

my @a = qw|a b c|;
@a = map {qq|"$_"|} @a;    

. Конечно, это обходит проверку, были ли элементы процитированы первоначально. Если вы хотите, чтобы элементы массива цитировались для вставки в базу данных с использованием, например, DBI, то более подходящим способом может быть:

@a = map{$dbh->quote($_)} @a;

Надеюсь, это поможет

1
ответ дан 8 December 2019 в 03:02
поделиться

Возможно, это не совсем то, что вы просите, но я большой поклонник Data :: Dumper для такого рода вещей.

-1
ответ дан 8 December 2019 в 03:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: