use re 'debug'; $_ = "one sata two N/A three N/A"; die if (/\bsata\b/i && /\bN\/A\b/ig && /\bN\/A\b/ig) ; __END__ Compiling REx `\bsata\b' size 5 Got 44 bytes for offset annotations. first at 1 1: BOUND(2) 2: EXACTF (4) 4: BOUND(5) 5: END(0) stclass `BOUND' minlen 4 Offsets: [5] 1[2] 3[4] 0[0] 7[2] 9[0] Compiling REx `\bN/A\b' size 5 Got 44 bytes for offset annotations. first at 1 1: BOUND(2) 2: EXACTF (4) 4: BOUND(5) 5: END(0) stclass `BOUND' minlen 3 Offsets: [5] 1[2] 3[3] 0[0] 6[2] 8[0] Compiling REx `\bN/A\b' size 5 Got 44 bytes for offset annotations. first at 1 1: BOUND(2) 2: EXACTF (4) 4: BOUND(5) 5: END(0) stclass `BOUND' minlen 3 Offsets: [5] 1[2] 3[3] 0[0] 6[2] 8[0] Matching REx `\bsata\b' against `one sata two N/A three N/A' Matching stclass `BOUND' against `one sata two N/A three ' Setting an EVAL scope, savestack=3 0 <> | 1: BOUND 0 <> | 2: EXACTF failed... Setting an EVAL scope, savestack=3 3 < sata two> | 1: BOUND 3 < sata two> | 2: EXACTF failed... Setting an EVAL scope, savestack=3 4 | 1: BOUND 4 | 2: EXACTF 8 < sata> < two N/> | 4: BOUND 8 < sata> < two N/> | 5: END Match successful! Matching REx `\bN/A\b' against `one sata two N/A three N/A' Matching stclass `BOUND' against `one sata two N/A three N' Setting an EVAL scope, savestack=3 0 <> | 1: BOUND 0 <> | 2: EXACTF failed... Setting an EVAL scope, savestack=3 3 < sata two> | 1: BOUND 3 < sata two> | 2: EXACTF failed... Setting an EVAL scope, savestack=3 4 | 1: BOUND 4 | 2: EXACTF failed... Setting an EVAL scope, savestack=3 8 < sata> < two N/> | 1: BOUND 8 < sata> < two N/> | 2: EXACTF failed... Setting an EVAL scope, savestack=3 9 | 1: BOUND 9 | 2: EXACTF failed... Setting an EVAL scope, savestack=3 12 < N/A th> | 1: BOUND 12 < N/A th> | 2: EXACTF failed... Setting an EVAL scope, savestack=3 13 < two > | 1: BOUND 13 < two > | 2: EXACTF 16 < three > | 4: BOUND 16 < three > | 5: END Match successful! Matching REx `\bN/A\b' against ` three N/A' Matching stclass `BOUND' against ` three N' Setting an EVAL scope, savestack=3 16 < three > | 1: BOUND 16 < three > | 2: EXACTF failed... Setting an EVAL scope, savestack=3 17 < N/A > | 1: BOUND 17 < N/A > | 2: EXACTF failed... Setting an EVAL scope, savestack=3 22 < N/A> | 1: BOUND 22 < N/A> | 2: EXACTF failed... Setting an EVAL scope, savestack=3 23 | 1: BOUND 23 | 2: EXACTF 26 <> | 4: BOUND 26 <> | 5: END Match successful! Died at same.regex.twice.pl line 5. Freeing REx: `"\\bsata\\b"' Freeing REx: `"\\bN/A\\b"' Freeing REx: `"\\bN/A\\b"'