Ich melde hiermit Zweifel an der Sinnhaftigkeit folgenden Konstrukts an:
while(<INPUTFILE>)
{
my $back = grep {$_ =~/$regexp/} <INPUTFILE>;
Wth, nicht nur, dass man filehandles eigentlich nicht in Listenkontext verwenden soll, hier wird erst Zeilenweise in der while-Schleife über "INPUTFILE" iteriert (erste Zeile) und dann der Rest durch den grep-Aufruf "geslurpt". (? Bin mir nicht völlig sicher, sollte aber ungefähr hinkommen.)
Außerdem arbeitet grep nicht nur mit Listen, sondern returned auch eine. Werden also zwei Einträge gefunden, wird eine 2-elementige-Liste returned, in skalarem Kontext also 2. Deswegen solltest du vielleicht $a nicht direkt auf Gleichheit mit 1 überprüfen... (Und überhaupt, abgesehen davon, dass "$a" und "$b" normalerweise für die sort-Funktion in perl reserviert sind, sinds auch
verdammt schlechte Variablennamen...)
Was der Threadersteller will klingt eigentlich sehr einfach:
use strict;
use warnings;
my $re = 'foo';
print "hihi" if grep {/$re/} ("bla", "blub", "foo", "bar");
$re = 'baz';
print "hihi" if grep {/$re/} ("bla", "blub", "foo", "bar");
Wenn man Variablen als Regexes verwenden will kann/sollte man übrigens den qr (quoted regex) Operator benutzen:
my $regex = qr/bla*bl[u0o]{0,5}b/;
Oder so..
Ansonsten @"Wo gibts Hilfe?":
Hier werden sie geholfen!
(Sollte auch als manpages offline verfügbar sein, aber manche mögen html halt lieber.. (Auch die htmls und pdfs kann man sich btw für offline Betrachtung downloaden.))