#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @lines;
while (<DATA>) {
chomp;
if (/^>/) {
push @lines, $_;
}
else {
$lines[-1] .= $_;
}
}
print Dumper \@lines;
__DATA__
>bob
123456789012345678901234567
8901234567890123
>squeaka
TTTGGACCCACAACGTACCACAGGTAT
SAJFIJEIFIRVNUTR
>trumpet
TTTTGAGACCCCCACAAAAGGATTTTT
ANDANOTHERLINERT
>nautilus
AGTCAGTCGATCGTACGTATATAACAC
CSADJOIASJNEEESA
Allowing a callback to return more than one level
I want to write some kind of text-only menu system, and that defines callbacks which are called for specific input.
Now the default behavior is to simply ignore the return value (trust me, it makes sense in my $work context), and exit the menu when the input is empty. However I want to give some callbacks the possibility to exit the menu too.
How? A normal return() doesn't accomplish that, so here is my hack:
use strict;
use warnings;
use 5.010;
my $return_args;
sub RETURN {
$return_args = [@_];
no warnings 'exiting';
last 'UNIQUELABEL';
}
sub menu {
UNIQUELABEL:
for (@_) {
$_->();
}
return @{$return_args} if $return_args;
};
say menu
sub { say 'go on' },
sub { RETURN 'ended' },
sub { 'never called' },
|