Beefy Boxes and Bandwidth Generously Provided by pair Networks
Pathologically Eclectic Rubbish Lister
 
PerlMonks  

Re: trouble with substitution

by kejohm (Hermit)
on Jan 19, 2012 at 02:45 UTC ( #948659=note: print w/ replies, xml ) Need Help??


in reply to trouble with substitution

The $ in the regex needs to be escaped (like this: s/ \$VAR1/ my %hash /) so Perl doesn't go looking for a variable named $VAR1 and complain when it can't find it.

Also, you have a subtle error in your code. The line if ($line = ~s/ \$VAR1/ my %hash /) is actually performing the search and replace on the default variable $_ (which hasn't been set to anything), taking the bitwise negation of the result (the number of replacements made, most likely zero) and assigning that result to the $line variable, which will most likely be true and execute the if block. The code should be like this:

... if ( $line =~ s/ \$VAR1/ my %hash / ) { ... } ...

In any case, this won't change your input file. You would need to write out to a new file after the search and replace.

A better way to do this is to specify the name of the variable when you dump your data structure using the $Data::Dumper::Varname variable, eg:

my %hash = (...); $Data::Dumper::Varname = 'hash'; print Dumper(\%hash);

An alternative is to use the object-oriented interface. You can specify your own names for your data structures, eg:

my %hash = (...); print Data::Dumper->Dump( [\%hash], ['hash'] );

See the docs for Data::Dumper for more details.

As an aside, you may want to consider dumping your data in a format such as XML or JSON, instead of as a Perl data structure.

Update: Minor clarifications re syntax.


Comment on Re: trouble with substitution
Select or Download Code

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://948659]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (6)
As of 2015-07-07 04:03 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (87 votes), past polls