Не первый год в Perl 5.10 есть оператор смартматчинга ~~, но я до сих пор не знал, где бы его применить. На днях Толя Шарифулин написал о том, как этот оператор использовать вместо grep.
А я, наконец-то, придумал, зачем мне это может потребоваться. Время от времени служебным утилитам требуется передавать опции, но читать их через Getopt::Long не очень хочется: во-первых, каждый раз приходится вспоминать синтаксис, а во-вторых, для коротких командных скриптов хочется более простого решения. Смартматчинг как раз его и дает:
say 'Debug' if '--debug' ~~ @ARGV;
say 'Daemon' if '-d' ~~ @ARGV;
Так же просто поискать ключ с помощью регулярного выражения:
say 'Help' if /^(-h|--help)$/ ~~ @ARGV;
Осталось придумать, как выделять аргументы ключей, например: -p 30.
И ссылка для привлечения внимания: smart-matching.com :-)
Комментировать