Kevin Pfeiffer wrote:
> 
> In article <[EMAIL PROTECTED]>, John W. Krahn wrote:
> >
> > Ok, but it may be a bit long.  :-)
> >
> > my $file = 'file.txt';
> >
> > my @unique = do {
> >     open my $fh, '<', $file or die "Cannot open $file: $!";
> >     my %seen;
> >     grep !$seen{$_}++, <$fh>
> >     };
> 
> How much different is:
> 
> my $file = 'file.txt';
> {
>    open my $fh, '<', $file or die "Cannot open $file: $!";
>    my %seen;
>    my @unique = grep {!$seen{$_}++} <$fh>;
     ^^^^^^^^^^
@unique disapears when the block ends (as does $fh and %seen.)

> }
> 
> (Or, what does 'do' do here that I, too, should do 'do'?)
> 
> Hmmmm, looking at my block, maybe the answer is "it places @unique outside
> of the block so that it is still accessible (but keeps our throwaway
> variables 'local')"?

Correct.

> BTW, doesn't 'sort -u' also sort the list?

No, the OP didn't want to sort the list, just find unique lines.


John
-- 
use Perl;
program
fulfillment

-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to