chiark / gitweb /
Portforward 3128 too.
[ian-dotfiles.git] / gpt
diff --git a/gpt b/gpt
index f16320caa464853689ee842154c95949592222ac..129ead4db67b7928bc1989705c1d81f26dfba7ab 100755 (executable)
--- a/gpt
+++ b/gpt
@@ -89,10 +89,10 @@ sub process_input () {
        print DEBUG "L $fn:$lno:",join('',@oplist),
                    ":`$l' e\`$expr' s\`$substr'\n";
        if (@oplist & 1) { # scanning perl
-           if ($l =~ m/(.)\@\@/m || $l =~ m/^()\@\@/m) {
+           if ($l =~ m/^()\@\@/ || $l =~ m/([^\000])\@\@/) {
                ($to,$op,$esc,$l) = ($`,$1,$&,$');
                add_perl($to);
-               if ($op =~ m/[ 0-9a-zA-Z_\;\)\}?]/ || $op eq '') {
+               if ($op =~ m/[ \t\n0-9a-zA-Z_\;\)\}?]/ || $op eq '') {
                    $top= pop @oplist;
                    if (!@oplist) {
                        # And evaluate.
@@ -123,10 +123,13 @@ sub process_input () {
            if ($l =~ m/\@\@(.|\n)/) {
                ($to,$op,$esc,$l) = ($`,$1,$&,$');
                add_text($to);
-               if ($op =~ m/[-< \$?]/) {
-                   $substr.= $esc if @oplist;
+               if ($op =~ m/[-< \$?\n]/) {
+                   if (!@oplist) {
+                       add_perl($op) if $op =~ m/[\$]/;
+                   } else {
+                       $substr.= $esc;
+                   }
                    push @oplist, $op;
-                   add_perl($op) if $op =~ m/[\$]/;
                } elsif ($op =~ m/[\)\}\;\:]/) {
                    err("unmatched closing \@\@$op") unless @oplist;
                    $want= pop @oplist;