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

Hello wise ones,

When I alter the (scalar)-dereferenced value in an element of a tied array, does that effect a write to file? Or must I explicitly use an array function to get that write -- ie overwrite by assignment the element's value with itself?

For example:

tie @atied ...; my $a1ref = \$atied[1]; # can I do this? .. if so .. $$a1ref =~ s/a/z/; # does this write the tied file? $atied[1] = $$a1ref; # or MUST I do this to write?

I am puzzled here. Any thoughts appreciated.

pstack

ok .. the follow up question that draws closer to my deeper interest is as to whether I subvert the gains of Tie::File with the following:

tie @atied ...; my @recs; for $a (@atied) {push @recs, \$a;} ... later ... for $a (@recs} {$$a =~ s/a/z/;}

ie .. while @recs persists is the whole file in memory?

pstack

Replies are listed 'Best First'.
Re: Tie::File query
by almut (Canon) on Nov 26, 2008 at 22:50 UTC
    ...does that effect a write to file?

    Yes.

    (my shortest reply, ever :)

      cheers!

      ... and sweet

Re: Tie::File query
by ikegami (Patriarch) on Nov 27, 2008 at 03:52 UTC
    Yes, and so would something like
    for ($atied[1]) { s/a/z/; }

    It probably would have been faster for you to test it than ask here.

      cheers2!

      ..... and bittersweet!