#!/usr/bin/env perl -l use strict; use warnings; my %decode_type = ( A => sub { "Do TypeA stuff with '$_[0]'" }, B => sub { "Do TypeB stuff with '$_[0]'" }, ); while () { chomp; my ($type, $msg) = split /\s+/, $_, 2; my $decoded = $decode_type{$type}->($msg); print $decoded; } __DATA__ B message B1 A more complex message A1 B message B2 #### Do TypeB stuff with 'message B1' Do TypeA stuff with 'more complex message A1' Do TypeB stuff with 'message B2'