"John W. Krahn" <[EMAIL PROTECTED]> writes: > Harry Putnam wrote: >> >> "Charles K. Clarkson" <[EMAIL PROTECTED]> writes: >> >> > Harry Putnam said: >> > : >> > : Here is the problem: >> > : >> > : Summary run home made tools against only the >> > : uniq paths that might contain perl *.pm files. >> > >> > Harry, that doesn't' make a bit of sense. >> > Could you rephrase the question? >> >> You can say that again... Must be heavy senior moments today. >> Not counting the misfired unfinished post that started the thread. >> Its still just plain wrong through and through. >> SPENCERS straightened me out. >> >> Having shot myself in the foot from the gate, I guess I might as >> well reveal the true depths of my ignorance and ask a remaining >> question. >> >> There were also typos in my initial post. I meant `*.pod' instead of >> `*.pm' but that doesn't really change the required coding. >> >> I've butched the hell out of SPENCER's code in an attempte to get >> sorted output (sort on non-absolute *.pod) and am getting duplicates >> in the output. Probably some really unorthodox technique (or lack >> there of). I often find that I code like an illiterate hillbilly. >> Probably because that is what I am.... anyway: >> >> I stuck the little uniquifier gimmick in there to prevent dups but >> can't really see why I would be getting dups. Maybe @INC does need >> further processing >> >> What is causing duplicates in the output. Not everthing but only a >> few. (The debug file, ./debug will have a number of dups in it) >> >> ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ >> #!/usr/local/bin/perl -w >> >> use strict; >> my (%name, @sorted, @unsorted, $absolute ); >> use File::Find ; >> >> open(DBG,">./debug") or die "cannot open DBG: $!"; >> >> find(\&wanted,@INC); >> >> sub wanted { >> if (/\.pod$/){ >> print DBG "$File::Find::name\n"; >> >> if ($name{$File::Find::name}++ == 0){ > > The initial value in $name{$File::Find::name} will be undef not zero so > comparing it to zero will not work. > > if ( $name{ $File::Find::name }++ ) { > > >> push @unsorted, "$_ $File::Find::name"; > > You are using a space character as field separator however file and > directory names can have spaces in them.
Not here but I take your point. > >> } >> } >> } >> @sorted = sort @unsorted; > > You probably should use the keys of %name which are unique. How cool, I hadn't realized this expression: if ($name{$File::Find::name}++ == 0){ Actually put a value in that slot of %name. But it doesn't really give the results I was after either. I wanted the sort on short *.pod name. Other wise I have things like: /usr/lib/perl5/5.6.1/Win32.pod coming first. So my formulation may be better in that regard. -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]