Bash расширяет символы подстановки, а затем передает их в программу. Это функция bash, и именно так работает bash, поэтому я не думаю, что вы сможете найти способ обойти это. (Интересно, что оболочка командной строки Windows не расширяет подстановочные знаки, поэтому вам нужно сделать несколько болезненных обходных путей, чтобы заставить сценарии Perl работать должным образом.)
Указание имен файлов является стандартным решением, и пользователи командной строки Linux должны быть с ним хорошо знакомы.
В других программах (таких как find (1) ) возникает та же проблема, что и в кавычках аргументов, которые используют символы подстановки.
(Даже если бы вы могли найти какой-нибудь способ запросить историю командной строки bash из вашего скрипта Perl, чтобы найти команду по мере ее ввода, у вас все равно будут проблемы с запуском вашего скрипта из других оболочек, других скриптов, и др.)