応答ヘッダーのような文字列を考えてみましょう: HTTP/1.1 404 Not Found
.
スマートマッチ (~~
または二重チルダ) 演算子と正規表現の組み合わせを使用して、一致の不完全またはサブセットを検索できるかどうか知りたいです。
my $head = q{HTTP/1.1 404 Not Found};
my @success = (200, 201);
my @failure = (404, 409);
# Array First
say q{Success} if @success ~~ $head;
say q{Fail} if @failure ~~ $head;
# Array Second
say q{Success} if $head ~~ @success ;
say q{Fail} if $head ~~ @failure ;
これは、ある種のループ、grep、またはマップで実行できることを知っています。~~
しかし、できることとできないことの可能性を調べています。
ドキュメントはかなり説明的であり、lhs/rhs 条件の大部分では、[左側のすべて] == [右側のすべて]評価に対して true を返すようです。
とはいえ$head
、 が数字 (例: $head=q{200}
) であれば一致します。
期待される結果は次のようになります。
my $head = q{HTTP/1.1 201 OK};
my @success = qw(200 201);
say q{Success} if grep{$head =~ /$_/ } @success;