in reply to data leak using package

I can't see anything obviously wrong with your code, so the problem must be somewhere else in your environment. Can you post a (short) example of a program which uses this package and exhibits the problem you're describing.

A couple of minor code review notes:

package wslib;

The Perl convention is to reserve lower case package names for pragmas (like 'warnings' and 'strict'). You should rename this to something like "WSLib".

open PAGE, "$data_reg"

There's no need for the quotes there. In fact it is sometimes a really bad idea.

Replies are listed 'Best First'.
Re^2: data leak using package
by Anonymous Monk on Feb 07, 2007 at 10:46 UTC

    Thanks for the general tips, I apologise for the delay in replying - I have been trying to synthesise the salient parts or the script

    In fact I have isolated what is causing the problem, but I'm not sure why or how I should change things to do what I want.
    The background is that several scripts are accessed by a single user by way of a 'work page', containing buttons for those scripts.
    When a script is finished with it uses wslib ( soon to be WSLib(!! :) ) to create a new work page, using html::template (not shown to keep the example simple.
    In this particular instance the script edits the text file $data_reg called up in sub workspace, and renames it. If I comment out the rename line, sub workspace prints out the whole file, if I leave it in it only prints three quarters of it!! How should I deal with this?

    sub edit { my $newline = join "\t", ($count_in,$current_time_in,$user_in,$passwo +rd_in,$email_in,$web_in,$agencyname_in,$business_in,$country_code_in, +$mobile_no_in,$sec_email_in,$skip); open FH, "$data_reg" or die "Can't open data_reg file for reading: $! +"; flock (FH, 1) or die "Can't lock data_reg file for reading"; my @alldata = <FH>; close FH; open FILE, '>', "$data_reg.tmp" or die "Can't open data_reg file for +reading: $!"; flock (FILE, 2) or die "Can't lock data_reg.tmp file for writing"; foreach (@alldata) { chomp; ($count,$current_time,$username,$password,$email,$web,$agencyname, +$business,$country_code,$mobile_no,$sec_email,$skip) = split /\t/; if ($user_in eq $username) { print FILE "$newline\n"; } else { print FILE "$_\n"; } } # rename ("$data_reg.tmp", "$data_reg") or die "Can't rename file: $! +"; ##only prints properly if commented out! &workspace(@exp); }
      It seems to be Dominus day today... even if it's Tuesday! Regarding this fragment:
      open FILE, '>', "$data_reg.tmp" or die "Can't open data_reg file for +reading: $ +!"; flock (FILE, 2) or die "Can't lock data_reg.tmp file for writing";
      you might benefit from these slides.

      Flavio
      perl -ple'$_=reverse' <<<ti.xittelop@oivalf

      Don't fool yourself.