At 5:45 AM -0500 2/7/05, Michael G Schwern wrote: >On Sat, Jan 29, 2005 at 05:44:20PM -0600, Craig A. Berry wrote: >> That was my first theory as well, but that's not it. It's the result of >> the fact that I have a logical name "bin" defined, so it looks for >> bin/foo there rather than in the local relative path. Simply prepending >> ./ seems to do the trick: >> >> $ show logical bin >> "BIN" = "gnu:[bin]" (LNM$SYSTEM_TABLE) >> >> $ perl -e "open(F,qq/<$ARGV[0]/) or die qq/$!/;" bin/chown >> $ >> >> succeeds because chown does actually exist in gnu:[bin] >> >> $ perl -e "open(F,qq/<$ARGV[0]/) or die qq/$!/;" bin/instmodsh >> no such file or directory at -e line 1. >> %RMS-E-FNF, file not found >> >> fails because instmodsh does not exist in gnu:[bin] >> >> $ perl -e "open(F,qq/<$ARGV[0]/) or die qq/$!/;" ./bin/instmodsh >> $ >> >> succeeds because the additional syntax disambiguates it. We had to do >> something like this to File::Find some time ago. >> >> Do you want a patch to cp_if_diff in Manifest.pm or do you already have >> an idea of how you want to handle this? > >I'm of half a mind to just say that having a logical called 'bin' is >likely to break lots of unixy software if it makes "bin/foo" unsafe. >I'm sure there's lots of other places in MakeMaker which use "foo/bar" to >mean "./foo/bar" and something else will just break in the future.
Well, File::Spec->catdir(File::Spec->curdir(), 'bin') seems to always do the right thing. >In fact I'm a little surprised it hasn't. Could you check if it applies >to C<open(F, qq/$ARGV[0]/)> as well? cp_if_diff() is one of the few places >that uses < in open in MakeMaker. It does apply to other forms of open. I don't think it's shown up before because it's relatively new to have a test in MakeMaker that uses 'bin' as a directory name. -- ________________________________________ Craig A. Berry mailto:[EMAIL PROTECTED] "... getting out of a sonnet is much more difficult than getting in." Brad Leithauser