At this time, $1 substitution works by parsing a command line argument as a number and pasting that number token into the script. @1 turns it into a string literal token. There is no way to paste plain old characters, to do this: probe syscall.$1 { } So, let's change things: @1 would be redefined/clarified to paste a double-quoted (and internally \-escaped) sequence of characters; $1 would be redefined to paste the command line arguments verbatim. In each case, these would paste characters right into the lexer input stream. (Numeric parsing for $N would be left to the ordinary tokenizer.) Existing scripts that use $1/@1 should actually be unaffected by this.
patch committed