!$saw{$_}++
is
!$saw{$_}++
is
!($saw{$_}++)
is
!(do { my $previously_seen = $saw{$_}; $saw{$_} += 1; $previously_seen })
is
do { my $previously_seen = $saw{$_}; $saw{$_} += 1; !$previously_seen }
is a simplification of:
do { my $previously_seen = $saw{$_}; $saw{$_} = 1; !$previously_seen }
means (when in context of the grep)
If the string we're looking at is in %saw, return false. Otherwise, add that string to %saw and return true.
means (when in context of the grep)
Remove duplicates.
In reply to Re: What does !$saw{$_}++ means
by ikegami
in thread What does !$saw{$_}++ means
by nwkcmk
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |