use Modern::Perl; while () { chomp; my ($id, $sample_id, undef, $animal, undef, $color) = split /[\t_;]+/; say "$id ($sample_id) is a $animal colored $color"; } __DATA__ occurence1 A a__bear;c__black occurence2 B a__wolf;c__grey occurence3 A a__wolf;c__white occurence4 A a__bear;c__ occurence5 C a__wolf;c__grey occurence6 C a__bear;c__brown