2014-05-05 17 views
7

Trong perl, tôi muốn để có thể làm điều này:perl trường hợp không nhạy cảm chuyển đổi như biến?

$switches = "is"; 
$regexp = "\\d"; 
if ($string =~ m/$regexp/$switches) { 
do something... 
} 

Nói cách khác, làm thế nào tôi có thể làm cho "$ tắc" không bắt buộc tại thời gian chạy? (Người dùng có thể chọn từ một loạt các lựa chọn cho việc tìm kiếm)

+0

loại thiết bị chuyển mạch nào? bạn có nghĩa là dòng lệnh args? './foo.pl arg1 -arg2 = foo'? –

+0

@Marc B, Cờ điều khiển trận đấu – ikegami

Trả lời

11
if ($string =~ /(?$flags:$pattern)/) { 
    ... 
} 

Lưu ý: Điều này sẽ không hoạt động nếu $pattern là một mô hình biên dịch (tức là sản xuất bởi qr//) chứ không phải là một chuỗi vì đó là cờ truyền đến qr// ảnh hưởng đến mẫu được biên dịch với qr//. Bạn sẽ phải chuyển cờ đến qr// thay vì m//.

+0

Cảm ơn, @ikegami. Câu trả lời rất rõ ràng. – sploiber

Các vấn đề liên quan