in reply to Re: getting 0 to print
in thread getting 0 to print

Thank you wise monk yet if I modify my sub trim to ...
55 sub trim { 56 my @out = @_; 57 if ( !defined(@_)) {return "";} 58 if ( $#out == -1 ) {return "";} 59 for(@out) { 60 #next if !($_); 61 #if (!($_)) { $_ = ""; } 62 s/^\s+//; 63 s/\s+$//; 64 s/\|//g; 65 s/\n//g; 66 s/\cM//g; 67 s/\r//g; 68 } 69 return wantarray ? @out : $out[0]; 70}
... I get these messages ...
Use of uninitialized value in join or string at ./b.pl line 49
Use of uninitialized value in join or string at ./b.pl line 62
Use of uninitialized value in join or string at ./b.pl line 63
... etc 
I would like to not have any extraneous output.
Any suggestion?

Replies are listed 'Best First'.
Re: Re: Re: getting 0 to print
by pfaut (Priest) on Jan 13, 2003 at 21:40 UTC

    You appear to be passing undefined values to your trim routine. If you want to substitute an empty string for undefined values, test with defined. if (!$_) is true for 0 and undefined values and your code was substituting an empty string for either. I think you only wanted the substitution for undefined values.

    59 for(@out) { 60 #next if !($_); 61 if (!defined $_) { $_ = ""; } 62 s/^\s+//; 63 s/\s+$//; 64 s/\|//g; 65 s/\n//g; 66 s/\cM//g; 67 s/\r//g; 68 }
    --- print map { my ($m)=1<<hex($_)&11?' ':''; $m.=substr('AHJPacehklnorstu',hex($_),1) } split //,'2fde0abe76c36c914586c';
      Ah yes!
      if (!defined $_) { $_ = ""; }
      is most wise.
      Thank you O wise monk.