Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.86k stars 528 forks source link

Use of uninitialized value in numeric eq (==) at /usr/local/lib/perl5/5.5.660/pwd.pl line 38. ( #1233

Closed p5pRT closed 20 years ago

p5pRT commented 24 years ago

Migrated from rt.perl.org#2219 (status was 'resolved')

Searchable as RT2219$

p5pRT commented 24 years ago

From dcd@tc.fluke.com

Created by dcd@tc.fluke.com

  == patch to pwd.pl follows ==

I had a script that I wrote long ago that required pwd.pl when I ran it recently it gave the same errors as the one line example

dd​:jtag$ perl -w -le 'require "pwd.pl"; &initpwd;' Use of uninitialized value in numeric eq (==) at /usr/local/lib/perl5/5.5.660/pwd.pl line 38.

I can switch to using Cwd

dd​:jtag$ perl -w -MCwd -le 'Cwd​::chdir_init' dd​:jtag$ /bin/pwd

/home/hobbes/sw/project/486tools/src/jtag dd​:jtag$ echo $PWD /home/hobbes/sw/project/486tools/src/jtag

but it appears that the code in pwd.pl needs to be patched like Cwd.pm was\, since the stats may fail and return undefined value

Inline Patch ```diff --- perl5.5.660/lib/pwd.pl.orig Sun Jul 25 22:03:47 1999 +++ perl5.5.660/lib/pwd.pl Sat Feb 26 13:54:46 2000 @@ -25,7 +25,7 @@ if ($ENV{'PWD'}) { local($dd,$di) = stat('.'); local($pd,$pi) = stat($ENV{'PWD'}); - if ($di != $pi || $dd != $pd) { + if (!defined $dd or !defined $pd or $di != $pi or $dd != $pd) { chop($ENV{'PWD'} = `pwd`); } } @@ -35,7 +35,7 @@ if ($ENV{'PWD'} =~ m|(/[^/]+(/[^/]+/[^/]+))(.*)|) { local($pd,$pi) = stat($2); local($dd,$di) = stat($1); - if ($di == $pi && $dd == $pd) { + if (defined $pd and defined $dd and $di == $pi and $dd == $pd) { $ENV{'PWD'}="$2$3"; } } ```
Perl Info ``` Site configuration information for perl v5.5.660: Configured by dcd at Thu Feb 24 09:54:36 PST 2000. Summary of my perl5 (revision 5.0 version 5 subversion 660) configuration: Platform: osname=linux, osvers=2.2.15pre10, archname=i686-linux uname='linux dd 2.2.15pre10 #2 thu feb 24 09:36:58 pst 2000 i686 ' config_args='-Doptimize=-g -de -Dcf_email=dcd@tc.fluke.com' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usesocks=undef useperlio=undef d_sfio=undef use64bits=undef uselargefiles=define usemultiplicity=undef Compiler: cc='cc', optimize='-g', gccversion=2.7.2.3 cppflags='-DDEBUGGING -I/usr/local/include' ccflags ='-DDEBUGGING -I/usr/local/include' stdchar='char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=4 alignbytes=4, usemymalloc=n, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lgdbm -ldbm -ldb -ldl -lm -lc libc=/lib/libc.so.5.4.44, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Locally applied patches: @INC for perl v5.5.660: /usr/local/lib/perl5/5.5.660/i686-linux /usr/local/lib/perl5/5.5.660 /usr/local/lib/perl5/site_perl/5.5.660/i686-linux /usr/local/lib/perl5/site_perl/5.5.660 /usr/local/lib/perl5/site_perl . Environment for perl v5.5.660: HOME=/home/dcd LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH (unset) LOGDIR (unset) PATH=/home/dcd/bin:/sbin:/usr/local/bin:/bin:/usr/bin:/usr/X11/bin:/usr/games:/usr/local/samba:/home/hobbes/tools/scripts:/home/hobbes/tools/linux:/usr0/hobbes/tools/scripts:/usr0/dcd/bin:/apps/general/bin:/usr/public PERL_BADLANG (unset) SHELL=/bin/bash ```