#!/usr/bin/perl use strict; use warnings; my @labels = qw /L0 L1 L2/; while () { chomp; goto $labels[0]; L0: if (/foo/) { print "FOO!\n"; @labels = grep {$_ ne "L0"} @labels; next; } goto $labels[1]; L1: if (/bar/) { print "BAR!\n"; @labels = grep {$_ ne "L1"} @labels; next; } L2: print "$_ "; } print "\n"; __DATA__ one two bar three four foo five six foo seven eight bar nine ten one two BAR! three four FOO! five six foo seven eight bar nine ten