- my ($self, @segments) = @_;
-
- my $package = ref $self;
-
- return $self->seq unless @segments;
- confess "Passed an uneven number of segments" unless @segments % 2 == 0;
-
- {
- my %segments = @segments;
- # Find out if there are overlapping segments
- for my $pri (sort keys %segments) {
- for my $test (sort keys %segments) {
- next if $pri == $test;
- croak "Overlapping segments" if $test < $segments{$pri};
- }
- }
- }
-
- my @sections;
- my ($i, @seq) = (0, $self->seq);
- do {
- my ($start, $end) = @segments[$i, $i + 1];
-
- # Create a new sequence object in the correct package, and put the
- # segment into it
- my $new_seq = $package->new(id => $self->id);
- $new_seq->seq( @seq[ $start .. $end ] );
- push @sections, $new_seq;
- $i += 2;
- } while ($i < @segments);
-
- return @sections;
+ my ( $self, @segments ) = @_;
+
+ my $package = ref $self;
+
+ return $self->seq unless @segments;
+ confess "Passed an uneven number of segments" unless @segments % 2 == 0;
+
+ {
+ my %segments = @segments;
+
+ # Find out if there are overlapping segments
+ for my $pri ( sort keys %segments ) {
+ for my $test ( sort keys %segments ) {
+ next if $pri == $test;
+ croak "Overlapping segments" if $test < $segments{$pri};
+ }
+ }
+ }
+
+ my @sections;
+ my ( $i, @seq ) = ( 0, $self->seq );
+ do {
+ my ( $start, $end ) = @segments[ $i, $i + 1 ];
+
+ # Create a new sequence object in the correct package, and put the
+ # segment into it
+ my $new_seq = $package->new( id => $self->id );
+ $new_seq->seq( @seq[ $start .. $end ] );
+ push @sections, $new_seq;
+ $i += 2;
+ } while ( $i < @segments );
+
+ return @sections;