http://qs321.pair.com?node_id=306190


in reply to Writing to a packaged file with PerlApp

Your PATH and @INC are irrelevant. open relies only on the path information you pass to it. However, since you're using PerlApp, you need to use a utility function to extract the file from the EXE. Something like this:
my $filename = PerlApp::extract_bound_file($datafile); open my $fh, ">$filename";
I'm not sure why you're writing to the file, though, because it's really only a temporary file. You may want to rethink that. Files bundled into the EXE are designed for reading - changes you make won't end up back in the EXE. Instead, the temporary file will be changed.

There's more information here.

Are you sure it was a book? Are you sure it wasn't.....nothing?

Replies are listed 'Best First'.
Re: Re: Writing to a packaged file with PerlApp
by perl_seeker (Scribe) on Nov 14, 2003 at 09:18 UTC
    Hello,
    thanks for the reply.

    >open relies only on the path information you pass to it.

    Here I cannot specify the path name since a process id also gets attached to the temp. folder name at run time e.g
    c:\windows\temp\pdk-username--(what process-id to write here?)\mytextf +ile.txt
    >you need to use a utility function to extract the file from the EXE

    I've tried using code like this in my .pl
    sub chfile { ....... my $datafile = "myfile.txt"; my $filename = PerlApp::extract_bound_file($datafile); die "$datafile not bound to application\n" unless defined $filename; my $fh="LEX"; open($fh,'$filename') or die "Can't open $datafile $filename)\n"; while(<LEX>){ ...... } }
    When I create the .exe using PerlApp and run it , the exe cannot open myfile.txt. I keep getting this error:
    Tk:Error:Can't open myfile.txt <c:\test\pdk-myname--121077199/myfile.t +xt>[\&main::chfile]
    What am I doing wrong here?

    >I'm not sure why you're writing to the file, though, because it's really only a temporary file.

    PerlApp treats the attached text files as temporary ones, but in the application I've written they are not temorary.
    The .pl script needs to read data from the text file,process it, and also update it (append to it).Each time the .exe
    runs, the .pl script needs to use the updated version of the text file, that was created in the previous run.

    Is there no way to get around this?
    Thanx,
    :)