tweet.user.screen_name if tweet.user.screen_name.match('username2')
это соответствует любому регулярному выражению или строке в ()
Мой финал таков:
TwitterApi.client.search("to:username", result_type: "recent").take(10).collect do |tweet|
tweet.user.screen_name if tweet.user.screen_name.match(/#{@record.username}/i)
end
Таким образом, результаты верны независимо от регистра без учета регистра [115 ]
Если Вы используете system $cmd, @args
, а не system "$cmd @args"
(массив, а не строка), то Вы не должны выходить из аргументов, потому что никакая оболочка не вызывается (см. система ). system {$cmd} $cmd, @args
не вызовет оболочку также, даже если $cmd будет содержать метасимволы, и @args пуст (это документируется как часть [1 110] должностное лицо ). Если args прибудут из ввода данных пользователем (или другой недоверяемый источник), то Вы все еще захотите не испортить их. См. -T
в perlrun документы, и perlsec документы.
, Если необходимо считать вывод или отправить вход в команду, qx
и readpipe
, не имеют никакого эквивалента. Вместо этого используйте open my $output, "-|", $cmd, @args
или open my $input, "|-", $cmd, @args
, хотя это не портативно, поскольку это требует реального fork
, что означает Unix только... Я думаю. Возможно, это будет работать над Windows со своим моделируемым ветвлением. Более оптимальный вариант - что-то как [1 113] IPC:: Выполненный , который также обработает случай передачи по каналу команд к другим командам, которые не обработают ни форма мультиаргумента системы, ни 4 формы аргумента открытых.
В Windows ситуация немного более противна. В основном все программы Win32 получают одну длинную строку командной строки - оболочка (обычно cmd.exe
) может сделать некоторую интерпретацию сначала, удаляя <
и >
перенаправления, например, но она делает не , разделяют ее на границах слова для программы. Каждая программа должна сделать этот парсинг себя (если они желают - некоторые программы не беспокоятся). В C и программах C++, стандартные программы, обеспеченные библиотеками времени выполнения, предоставленными набором инструментальных средств компилятора, будут обычно выполнять этот шаг парсинга, прежде чем main()
будет назван.
проблема, в целом, Вы не знаете, как данная программа проанализирует свою командную строку . Много программ компилируются с некоторой версией MSVC ++, чей изворотливые правила парсинга описаны здесь , но многие другие компилируются с различными компиляторами, которые используют различные конвенции.
Это составлено тем, которое cmd.exe
имеет его собственные изворотливые правила парсинга. Каре (^
) рассматривают как символ ESC, который заключает следующий символ в кавычки, и текст в двойных кавычках рассматривают, как заключено в кавычки, если список хитрых критериев выполняется (см. cmd /?
для полных окровавленных деталей). Если Ваша команда содержит какие-либо странные символы, это очень легко для cmd.exe
, идея которого части текста "заключаются в кавычки" и которые не должны выходить из синхронизации с Вашей целевой программой, и весь ад вырывается на свободу.
Так, самый безопасный подход для выхода из аргументов в Windows:
^
. &&
).