in reply to pattern matching

What is "^@"? If it is a Control-@ (ASCII null) character, then
    $string =~ s{ \c@ \z }{}xms;
will do the trick. If there may be more than one, use
    $string =~ s{ \c@ + \z }{}xms;
>perl -wMstrict -le "my $string = qq{ab.cd\c@}; print qq{'$string'}; $string =~ s{ \c@ \z }{}xms; print qq{'$string'}; " 'ab.cd ' 'ab.cd' >perl -wMstrict -le "my $string = qq{ab.cd\c@\c@\c@}; print qq{'$string'}; $string =~ s{ \c@ + \z }{}xms; print qq{'$string'}; " 'ab.cd ' 'ab.cd'