if (receivesClosureArg && (call.getCallArgs().length > 1)) {
this.canCaptureCallersBinding = true;
}
}
} else if (op == Operation.GET_GLOBAL_VAR) {
GlobalVariable gv = (GlobalVariable)((GetGlobalVariableInstr)i).getSource();
String gvName = gv.getName();
if (gvName.equals("$_") ||
gvName.equals("$~") ||
gvName.equals("$`") ||
gvName.equals("$'") ||
gvName.equals("$+") ||
gvName.equals("$LAST_READ_LINE") ||
gvName.equals("$LAST_MATCH_INFO") ||
gvName.equals("$PREMATCH") ||
gvName.equals("$POSTMATCH") ||
gvName.equals("$LAST_PAREN_MATCH"))
{
this.usesBackrefOrLastline = true;
}
} else if (op == Operation.PUT_GLOBAL_VAR) {
GlobalVariable gv = (GlobalVariable)((PutGlobalVarInstr)i).getTarget();
String gvName = gv.getName();
if (gvName.equals("$_") || gvName.equals("$~")) usesBackrefOrLastline = true;
} else if (op == Operation.MATCH || op == Operation.MATCH2 || op == Operation.MATCH3) {
this.usesBackrefOrLastline = true;
} else if (op == Operation.BREAK) {
this.hasBreakInstrs = true;