Beefy Boxes and Bandwidth Generously Provided by pair Networks Bob
Syntactic Confectionery Delight
 
PerlMonks  

Re: Tie::File Write Problem

by toolic (Chancellor)
on Nov 17, 2011 at 19:30 UTC ( #938672=note: print w/ replies, xml ) Need Help??


in reply to Tie::File Write Problem

After you tied the file to the @lines array, you never make a modification to the @lines array. See Tie::File.

tie @lines, 'Tie::File', $file or die "No file found to work with."; $lines[0] = 'foo'; # this should change the tied file


Comment on Re: Tie::File Write Problem
Download Code
Re^2: Tie::File Write Problem
by packetstormer (Monk) on Nov 17, 2011 at 19:32 UTC
    That's my confusion, doesn't this line change the element in the line?
    if($tmp[6] eq "6 Elm") {$tmp[6] = 'XXXXX'}
    I am splitting each line up based on the commas in the line and changing that element
      That line does not change the @lines array or the tied file. That just changes the @tmp array. Tip #4 from Basic debugging checklist:
      use Data::Dumper; print Dumper(\@tmp); print Dumper(\@lines);

      @tmp is a completely separate variable that is not tied to the file. The split copies the data. You would have to add the following inside the foreach-loop to change the file as you intented:

      $i= join(',',@tmp);

      Note that even this works only because $i actually is an alias to the data in @lines and not a copy (this is magic done by the foreach loop)

        Thanks - when I think it through it makes sense as to why it wasn't writing to the file!

        Rejoining the value back into the line works perfectly!

Log In?
Username:
Password:

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

How do I use this? | Other CB clients
Other Users?
Others imbibing at the Monastery: (5)
As of 2014-04-21 10:25 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    April first is:







    Results (492 votes), past polls