Glenn Linderman schrieb:
Last night I was watching my backup more closely than I usually do, and I noticed it backing up 4 files matching the name parl*.exe from my perl source code directory (which is my current directory when I run pp). Upon investigation, I discovered 98 files matching that pattern, dating from 11/9/2006, plus one dating from 7/28/2006, but the * only matched 4 characters for that older file, and it matches 7 for the newer ones. So I ran pp again today, and now I have 100 parl*.exe files.

Looks like each run of pp leaves behind an orphan parl*.exe file.

Is this something added with the parl-regeneration-for-every-pp-call feature?

Certainly sounds like it. It's using File::Temp to create temporary file called parlXXXX(.exe) which XXXX replaced by some random string. To be precise, it does that twice because it needs to extract a "naked" parl in order to use that to bootstrap itself. It unlink()s the naked parl in the same subroutine. The only reason it wouldn't do that would be if you die out of the subroutine.

The second (complete) parl is up to the user of the ::StrippedPARL::* code to delete. This happens in PAR::Packer. When parl is extracted, a special flag of the Packer object is set: "parl_is_temporary". The DESTORY block of PAR::Packer has an unlink() for that if "parl_is_temporary".

It leaves no traces on my computer. Then again, I haven't checked on Windows.

Can you please find out whether those parl's are "naked"/"stripped"? You can find that out by comparing them to the static.exe that is generated during the PAR build process. The size shouldn't differ.

Steffen

Reply via email to