http://qs321.pair.com?node_id=11121035

nysus has asked for the wisdom of the Perl Monks concerning the following question:

I got this:

#! /usr/bin/env perl use strict; use warnings; my $here = <<HERE; before text more text ### hjh jh ja jhjasdhf jh'j asdk kas dkjakdjf kasjd fkjasdkfj kajsdkjf kasjdf end ### after headline after text HERE $here =~ s/(^(#+)\s)(.*?)\g2/$2 . ' ' . $3 =~ s|\n||rg . $2/mse; print $here . "\n";

I expect this to be output:

before text more text ### hjh jh ja jhjasdhf jh'jasdk kas dkjakdjf kasjd fkjasdkfjkajsdkjf k +asjdf end ### after headline after text

Output I get:

Use of uninitialized value $2 in concatenation (.) or string at /Users +/me/perl/workshop/regex/tut.pl line 16. before text more text ### hjh jh ja jhjasdhf jh'jasdk kas dkjakdjf kasjd fkjasdkfjkajsdkjf k +asjdf end after headline after text

I can fix this by assigning $2 go a new scalar variable first and then using the new variable. But I'm not sure why I have to do that.

$PM = "Perl Monk's";
$MCF = "Most Clueless Friar Abbot Bishop Pontiff Deacon Curate Priest Vicar";
$nysus = $PM . ' ' . $MCF;
Click here if you love Perl Monks