http://www.perlmonks.org?node_id=988702


in reply to Editing the contents of a variable

Better? Who knows? That depends on your intent, your data, etc.

More concise (and less reliance on $_... which is easy to overuse):

#!/usr/bin/perl use 5.014; # 988698 my $str = "yada yada <name> string-to-capture </name> foo bar baz"; if ( $str =~ m!<name>(.*?)<\/name>! ) { my $var1=$1; $var1 =~ s/ //g; # removing spaces? print "$var1\n"; }

However, if the actual "tags" are intended to be html, xml or suchlike, your "better way" almost certainly involves using an appropriate parser.

Replies are listed 'Best First'.
Re^2: Editing the contents of a variable
by flexvault (Monsignor) on Aug 21, 2012 at 12:58 UTC

    ww,

    Just a thought, if the 'string-to-capture' had information separated by spaces, your code would eliminate all spaces, maybe the special case:

    my $str = "yada yada <name> string-to-capture string-to-capture2 </n +ame> foo bar baz"; if ( $str =~ m!<name>(.*?)<\/name>! ) { my $var1=$1; $var1 = join(" ", split " ", $var1 ); # remove leading, trailin +g and # collapse internal white +space print "$var1\n"; }
    would be better. ( Taken from Camel book 3rd edition, page 154 )

    "Well done is better than well said." - Benjamin Franklin

      The s/ //g is OP's. Comment (question) is mine as, (for most purposes I can imagine in the background of the OP,) it makes no obvious sense.

      Your reply, however, calls attention to that, which is a good thing, if OP is cargo-culting or had missed the implications. + +