+ for (i = 0; i < len; ++i) {
+ if (s[i] == '\n') {
+ ++i;
+ while (i < len && s[i] == '\r')
+ ++i;
+ break;
+ }
+ }
+
+ return i;
+}
+
+STATIC int indirect_find(pTHX_ SV *name_sv, const char *line_bufptr, STRLEN *name_pos) {
+#define indirect_find(NSV, LBP, NP) indirect_find(aTHX_ (NSV), (LBP), (NP))
+ STRLEN name_len, line_len;
+ const char *name, *p, *t, *u;
+
+ name = SvPV_const(name_sv, name_len);
+ if (name_len >= 1 && *name == '$') {
+ ++name;
+ --name_len;
+ line_bufptr = strchr(line_bufptr, '$');
+ if (!line_bufptr)