John's will only work if the next string is the same as the last string. If you
mix up the strings it does not work.
sarge-plain:~# perl -le'
my $data = q[aaaaaa
cccccc
bbb
cccccc
aaaaaa
];
print $data;
$data =~ s/(.*\n)(?=\1)//g;
print $data;
'
aaaaaa
cccccc
bbb
cccccc
aaaaaa
aaaaaa
cccccc
bbb
cccccc
aaaaaa
while Chas' will work for repeating and duplicate strings.
#!/usr/bin/perl
use strict;
use warnings;
my %h;
while (<DATA>) {
print unless $h{$_}++
}
__DATA__
AAAAAAAAAAAAA
NNNNNNNNNNN
BBBBBBBBB
CCCCCCCCC
AAAAAAAAAAAAA
NNNNNNNNNNN
BBBBBBBBB
CCCCCCCCC
AAAAAAAAAAAAA
AAAAAAAAAAAAA
AAAAAAAAAAAAA
NNNNNNNNNNN
NNNNNNNNNNN
NNNNNNNNNNN
BBBBBBBBB
BBBBBBBBB
BBBBBBBBB
CCCCCCCCC
CCCCCCCCC
CCCCCCCCC
sarge-plain:~# ./temp.pl
AAAAAAAAAAAAA
NNNNNNNNNNN
BBBBBBBBB
CCCCCCCCC
Tony Heal
> -----Original Message-----
> From: John W. Krahn [mailto:[EMAIL PROTECTED]
> Sent: Tuesday, June 12, 2007 3:20 PM
> To: Perl beginners
> Subject: Re: regex for matching repeated strings
>
> yitzle wrote:
> > Issues with both methods:
> >
> > John's doesn't work for this data:
> > aaaaaa
> > aaaaaa
> > bbb
> > cccccc
> > cccccc
> >
> > I would expect:
> > aaaaaa
> > bbb
> > cccccc
> >
> > I would get:
> > aaaaaa
> > bbb
> > cccccc
> > cccccc
>
> It works for me:
>
> $ perl -le'
> my $data = q[aaaaaa
> aaaaaa
> bbb
> cccccc
> cccccc
> ];
> print $data;
> $data =~ s/(.*\n)(?=\1)//g;
> print $data;
> '
> aaaaaa
> aaaaaa
> bbb
> cccccc
> cccccc
>
> aaaaaa
> bbb
> cccccc
>
>
>
>
> John
> --
> use Perl;
> program
> fulfillment
>
> --
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
> http://learn.perl.org/
--
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]
http://learn.perl.org/