У меня возникает эта странная проблема с Perl. Я пытаюсь выполнить внешнюю программу изнутри моего скрипта Perl, и эта внешняя программа берет строку + подстановочный знак в качестве параметров. Моя программа Perl выглядит следующим образомПочему в моей трубе в Perl не работает Windows?
my $cmd_to_run = 'find-something-in-somedb myname* |'
open(procHandle, $cmd_to_run); # I am using open because I want to
# parse the output using pipes
По какой-то странной причине выполнения этого сценария Perl (под Windows) вызова open
функции заканчивается ошибкой:
'sqlselect' is not recognized as an internal or external command
Я догадался, что его что-то делать с *
присутствует в моей командной строке и, следовательно, я удалил его и теперь моя командная строка выглядит следующим образом
my $cmd_to_run = 'find-something-in-somedb myname|'
Теперь, когда я бег моего сценария Perl это прист ks отлично. Проблема возникает только при наличии подстановочного символа.
Некоторых моментов отметить:
Я побежал ту же команду с подстановочным полукоксом, в той же строке CMD (где я уверен, выполнение этого сценария Perl), и это работает прекрасно ..
Такая же команда работает, когда я программирую ее на C, используя функцию _open в Windows.
Проблема, кажется, только тогда, когда групповой символ * присутствует, по крайней мере, это то, что я угадал
Нет, я не пробовал это в Unix ..
Любые подсказки? ??
EDIT: Я нашел, что это как-то связано с ENV. Программа, которую я пытаюсь запустить, использует «sqlselect» только в том случае, если в строке поиска присутствует «*» дикая карта ... Оба варианта find-something-in-somedb и sqlselect присутствуют в одном месте. В этом случае, как perl может найти «find-in-db», а не «sqlselect»
Извините, что понимаю, что исходная проблема сейчас оказывается чем-то другим. Что-то вроде «ENV», а не с подстановочным знаком *
Еще один загадочный нижний план. Хммм ... –
Я поднимусь, чтобы сбалансировать это, но действительно ... downvote и никаких комментариев, объясняющих почему? – ephemient
@Sinan - У меня был озадачивающий нисходящий поток без комментариев. –