use warnings; use strict; use Carp; local $SIG{__WARN__}=sub {(my $str=join(" ",@_))=~s/[\n\r]//g;die("\t@{[(caller(1))[3]]}() => $str\n")}; my $foo = { aa => { O => 'zz', C => 'yy' }, # bb => { O => 'xx', C => 'xx' }, cc => { O => undef, C => 'ww' }, # dd => { O => 'vv', C => undef }, # ee => { O => undef, C => undef }, ff => { C => undef }, gg => { O => 0, C => 0 }, hh => { O => undef, C => 0 }, # #ii => { O => undef }, # jj => { O => 0, C => ' ' }, # kk => { O => ' ', C => 0 }, # ll => { O => undef, C => ' ' }, # mm => { O => ' ', C => undef }, # nn => { O => '', }, # oo => { O => '', C=> undef }, # pp => { O => undef, C=> '' }, # }; sub BUK{local($^W,$a)=(0,pop);grep{!exists$a->{$_}{O}or$a->{$_}{O}ne$a->{$_}{C}}keys%$a} sub snw{no warnings qw(uninitialized);my$h=pop;grep{$h->{$_}{O}ne$h->{$_}{C}}keys %$h} sub sg_{my$h=pop;grep{!(defined($h->{$_}{O}&&$h->{$_}{C})&&$h->{$_}{O}eq$h->{$_}{C}||!defined($h->{$_}{O}||$h->{$_}{C}))}%$h} sub eg_{my$h=pop;grep{!(($h->{$_}{O}||$;)eq($h->{$_}{C}||$;))}%$h} sub ddf{$a=pop;grep{$b=$$a{$_};defined$$b{O}!=defined$$b{C}||defined$$b{O}&&$$b{O}ne$$b{C}}keys%$a}#98 sub dex{$a=pop;grep{$b=$$a{$_};exists$$b{O}!=exists$$b{C}||defined$$b{O}!=defined$$b{C}||defined$$b{O}&&$$b{O}ne$$b{C}}keys%$a}#126 sub tad{my($h)=@_;grep{!exists($h->{$_}->{O})||(defined($h->{$_}->{O})?(defined($h->{$_}->{C})?($h->{$_}->{O}ne$h->{$_}->{C}):1):defined($h->{$_}->{C}))}keys%$h}#162 sub ukg{local$^W=0;my$a=pop;grep{!exists$a->{$_}{O}or$a->{$_}{O}ne$a->{$_}{C}}keys%$a} #85 sub ukf{local($^W,$a)=(0,pop);grep{!exists$a->{$_}{O}or$a->{$_}{O}ne$a->{$_}{C}}keys%$a} #87 sub ukh{$^W=0;$a=pop;grep{!exists$a->{$_}{O}or$a->{$_}{O}ne$a->{$_}{C}}keys%$a} sub ukF{no warnings;$a=pop;grep{!exists$a->{$_}{O}or$a->{$_}{O}ne$a->{$_}{C}}keys%$a} sub mysort {return sort {$a cmp $b} @_} print " Required: aa cc dd ff hh jj kk ll mm nn oo pp\n"; print "------------------------------------------------------------------------\n"; eval { print " tadman golf: ".join (" ",mysort tad({%$foo}))."\n"; }; print $@ if $@; eval { print "BrowserUK golf: ".join (" ",mysort BUK({%$foo}))."\n"; }; print $@ if $@; eval { print "sauoq No warns: ".join (" ",mysort snw({%$foo}))."\n"; }; print $@ if $@; eval { print " Sauoq golf: ".join (" ",mysort sg_({%$foo}))."\n"; }; print $@ if $@; eval { print " Elusion golf: ".join (" ",mysort eg_({%$foo}))."\n"; }; print $@ if $@; eval { print " Demerphq defd: ".join (" ",mysort ddf({%$foo}))."\n"; }; print $@ if $@; eval { print "Demerphq exist: ".join (" ",mysort dex({%$foo}))."\n"; }; print $@ if $@; eval { print " browserUk f(): ".join (" ",mysort ukf({%$foo}))."\n"; }; print $@ if $@; eval { print " browserUk g(): ".join (" ",mysort ukg({%$foo}))."\n"; }; print $@ if $@; eval { print " browserUk h(): ".join (" ",mysort ukh({%$foo}))."\n"; }; print $@ if $@; eval { print " browserUk F(): ".join (" ",mysort ukF({%$foo}))."\n"; }; print $@ if $@; #### Required: aa cc dd ff hh jj kk ll mm nn oo pp ------------------------------------------------------------------------ tadman golf: aa cc dd ff hh jj kk ll mm nn oo pp main::BUK() => Use of uninitialized value in string ne at c:\temp\golf.pl line 25. sauoq No warns: aa cc dd hh jj kk ll mm main::sg_() => Use of uninitialized value in string eq at c:\temp\golf.pl line 27. Elusion golf: aa cc dd jj kk ll mm Demerphq defd: aa cc dd hh jj kk ll mm nn oo pp Demerphq exist: aa cc dd ff hh jj kk ll mm nn oo pp main::ukf() => Use of uninitialized value in string ne at c:\temp\golf.pl line 33. main::ukg() => Use of uninitialized value in string ne at c:\temp\golf.pl line 32. main::ukh() => Use of uninitialized value in string ne at c:\temp\golf.pl line 34. browserUk F(): aa cc dd ff hh jj kk ll mm