tony summerfelt [mailto:snowzone5 / hotmail.com] : > On Tue, 15 Jun 2004 05:31:30 +0900, you wrote: >> What about the logic of your code or design depends on the >> 'existence' of a variable? What problem is it you're trying to >> solve with this approach? > just makes the code shorter. here's an excerpt of a log trimming > program in perl (for the format that binkd generates) [...] > while(<binkd>) > { > # date parsing code was here > @diff = Delta_DHMS(@binkdate,@today) if /(\[\d+\])/; > print $trimmed $_ if $diff[0] < $ARGV[1] && defined(@diff); > next if defined(@diff); > print $trimmed $_ if ! /(\[\d+\])/; > undef(@diff); > } Okay. Here's a partial reimplementation. Some of it is pseudo-codeish, because I don't know what your implementation is for certain items, but: binkd.each do |line| if link =~ /(\[\d+\])/o diff = Delta_DHMS(binkdate, today) if diff puts "#{trimmed} #{line}" if diff[0] < ARGV[1] next end else puts "#{trimmed} #{line}" diff = nil end end You don't actually need to make the *variable* diff go away, but the value referred to by diff. I have made the code a bit longer for readability (and a small bit of performance improvement; it reduces the number of comparisons because it isn't compared against the regexp more than once and doesn't have to test the non-nil nature of diff more than once). -austin -- austin ziegler * austin.ziegler / evault.com