#!/usr/bin/perl print "get some string: "; chomp($string = ); #$string = $ARGV[0]; #chomp($string); $string =~ m/\/([[:alnum:]]+)_.*\.(.+)$/; print "$1\n"; $type = $2; print "$type\n"; $string =~ m/(.+)\.${type}$/; #$string =~ m/(.+)\.${type}\Z/; #$string =~ m/(.+)\.${type}\z/; #$string =~ m/(.+)\.${type}/; print "$1\n"; exit 0; OUTPUT - which is wrong get some string: /xxxx/yyyy/ZZZ_xxxx.CCC ZZZ CCC ZZZ BUT IF I: #!/usr/bin/perl #print "get some string: "; #chomp($string = ); $string = $ARGV[0]; chomp($string); $string =~ m/\/([[:alnum:]]+)_.*\.(.+)$/; print "$1\n"; $type = $2; print "$type\n"; $string =~ m/(.+)\.${type}$/; #$string =~ m/(.+)\.${type}\Z/; #$string =~ m/(.+)\.${type}\z/; #$string =~ m/(.+)\.${type}/; print "$1\n"; exit 0; OUTPUT - IS CORRECT ZZZ CCC /xxxx/yyyy/ZZZ_xxxx