#!/usr/bin/perl -w use strict; my $string = 'abcbar'; my $sub = get_backref( $string ); print $sub; sub get_backref { my $string = shift; my $regex = '(foo)|(bar)|(baz)'; my $backref = 0; # This is the number of possible backreferences # It's easier to set than generate dynamically my $limit = 3; local ( $1, $2, $3 ); $string =~ /$regex/; for ( 1 .. $limit ) { no strict 'refs'; $backref = $_, last if defined $$_; } return $backref; }