/ / Zreťazenie reťazcov s medzerami v Perl. Akékoľvek vstavané prvky? - perl

Zosúvaď reťazce s medzerami v Perl. Akékoľvek vstavané prvky? - perl

V Perle môžem spojiť viacero reťazcov s medzerami medzi nimi takto:

my $long_string = $one_string . " " . $another_string . " " . $yet_another_string . " " .
$and_another_string . " " $the_lastr_string

Napíšte to však je trochu ťažkopádne.

Existuje vstavaný nástroj, ktorý zjednoduší túto úlohu?

napr. niečo ako:

concatenate_with_spaces($one_string, $another_string, $yet_another_string, ...)

odpovede:

13 pre odpoveď č. 1

Chceš join:

my $x = "X";
my @vars = ( 1, "then", "some" );
my $long_string = join " ", $x, 2, @vars;   # "X 2 1 then some"

9 pre odpoveď č. 2

Zaid dal idiomatické riešenie pomocou join, Existuje však viac spôsobov, ako to urobiť.

my @vars = ($one, $two, $three);
my $str1 = "@vars";               # Using array interpolation
my $str2 = "$one $two $three";    # interpolating scalars directly

Interpolácia poľa používa preddefinovanú premennú $" (zoznam separátor), ktorý je štandardne nastavený na medzeru. Pri interpolácii premenných nemusíte používať . na spojenie medzier do vašich reťazcov, môžu byť použité priamo v dvojitom udanom reťazci.


4 pre odpoveď č. 3
my @list_of_strings = ($one_string, $two_strings );
my $string = join(" ", @list_of_strings );
print $string;