Beefy Boxes and Bandwidth Generously Provided by pair Networks
The stupid question is the question not asked

How do I concatenate a string?

( #32418=categorized question: print w/ replies, xml ) Need Help??
Contributed by Anonymous Monk on Sep 14, 2000 at 06:54 UTC
Q&A  > strings

Answer: How do I concatenate a string?
contributed by davido

For simple concatenation,

my $foo = "Foo"; my $bar = "Bar"; my $string = $foo . $bar; # $string contains "FooBar".

For concatenating the new string to the end of the existing string (appending):

my $foo = "Foo"; my $bar = "Bar"; $foo .= $bar; # $foo now contains "FooBar"

For concatenating multiple strings all at once, use join. Join is (according to the Camel book) the most efficient way to concatenate many strings together. Join can be used with a delimiter, or with a null string as the delimiter, so that nothing is inserted between the strings that are joined (concatenated) together.

my $this = "This"; my $that = "That"; my $the = "The"; my $other = "Other"; my $string = join "", $this, $that, $the, $other; # $string now contains "ThisThatTheOther".

Join can do a lot more than just simple concatenation. Whatever you put between the quotes will be inserted between the strings that are being joined together. Also, join can accept not just a list of scalar variables, but also an array, or a list of literal strings.

Answer: How do I concatenate a string?
contributed by toolic

Interpolation using double quotes, for example, (see Quote and Quote like Operators) can be used to concatenate 2 (or more) scalar variables into a 3rd scalar variable:

my $s1 = 'Perl'; my $s2 = 'Monks'; my $s3 = "$s1$s2"; print "$s3\n"; # $s3 contains 'PerlMonks'

or using this syntax:

my $s3 = "${s1}${s2}";

Interpolation of array variables can also be performed to concatenate all element of the array into a string. It is necessary to unset the LIST_SEPARATOR ($") special variable, and it is good practice to localize this change to its own block:

{ undef $"; my @strs = 'a' .. 'e'; my $s4 = "@strs"; print "$s4\n"; # $s4 contains 'abcde' }


  • Please read these before you post! —
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Log In?

    What's my password?
    Create A New User
    and the web crawler heard nothing...

    How do I use this? | Other CB clients
    Other Users?
    Others musing on the Monastery: (12)
    As of 2015-05-06 16:14 GMT
    Find Nodes?
      Voting Booth?

      In my home, the TV remote control is ...

      Results (141 votes), past polls