arraysperlspecial-variables

What do $/ and $\ do?


I've found $\ = $/ when I was investigating how to merge 2 arrays, but I don't understand this at all. An example with it:

use strict;
$\ = $/;

my @array1 = ("string1", "string2");
my @array2 = ("string3", "string4");

my @array = (@array1, @array2);

print for @array;

What do they mean?


Solution

  • $\ is the output record separator. Whatever it contains is appended to each print statement. $/ is the input record separator, which has the default value of \n (newline). By setting the output record separator to newline, you don't have to add a newline to your print statements, making the statement:

    print for @array;
    

    ..look much smoother, compared to

    print "$_\n" for @array;
    

    Note that if he had used use 5.010; instead of $\ = $/;, he could have used

    say for @array;