$1 bezieht sich auf den Inhalt der ersten "capturing group" im letzten Treffer den die reguläre Ausdrucksmaschine gefunden hat.
Um eine solche Gruppe zu erzeugen musst Du einen Teil des regulären Ausdruckes in Klammern setzen. Wenn Du also zum Beispiel
/e(xo)n/ schreibst und das Muster wird gefunden dann ist danach
$1 eq 'xo'.
Wenn Du keine Gruppe sondern den gesamten Treffer auslesen möchtest, kannst Du die Variablen
$& oder
$MATCH benutzen. Wenn diese Variablen aber irgendwo im Programm benutzt werden, werden sämtliche Anwendungen regulärer Ausdrücke überall langsamer. Um das zu verhindern, sollte man lieber Gruppen nutzen, oder ab Perl 5.10 den betreffenden regulären Ausdruck mit dem Flag
/p versehen und auf
${^MATCH} statt
$MATCH zugreifen.
When C++ is your hammer, every problem looks like your thumb.