#!/usr/bin/perl use strict; use warnings; my $filedata = "Here is XYZ_ABC_123456.7890 Foo Bar"; my $mode = ( @ARGV and $ARGV[0] =~ /u/ ) ? ":utf8" : ''; open I, "<$mode", \$filedata ; while () { my ( $id ) = ( /(XYZ_ABC_[\d.]+)/ ); print "ID is $id\n"; }