Beefy Boxes and Bandwidth Generously Provided by pair Networks
more useful options

How do I concatenate a string?

by Anonymous Monk
on Sep 14, 2000 at 06:54 UTC ( #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 (register and) log in if you wish to add an answer

  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.
  • 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 browsing the Monastery: (5)
    As of 2021-02-27 19:01 GMT
    Find Nodes?
      Voting Booth?

      No recent polls found