"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]