Erm, die Regex matcht doch:
m/foo/ heißt ja "match foo", wobei man das m in diesem Fall auch hätte weglassen können, du meintest sicherlich capturen:
my ($ersteKlammer, $zweiteKlammer) = "ich bin ein string" =~ /^(\w+).+(\w+)$/;
Aber weshalb ich den Beitrag eigentlich verfasse ist das hier: (vom anderen Gast...)
@RECHNERNAME[$i] =UNGLAUBLICHES_REGEX_ZEUGS;
@Zahlenwert1[$i]= UNGLAUBLICHES_REGEX_ZEUGS;
@Zahlenwert2[$i]= UNGLAUBLICHES_REGEX_ZEUGS;
@Zahlenwert3[$i]= UNGLAUBLICHES_REGEX_ZEUGS;
Das sollte man so schreiben:
$RECHNERNAME[$i] =UNGLAUBLICHES_REGEX_ZEUGS;
$Zahlenwert1[$i]= UNGLAUBLICHES_REGEX_ZEUGS;
$Zahlenwert2[$i]= UNGLAUBLICHES_REGEX_ZEUGS;
$Zahlenwert3[$i]= UNGLAUBLICHES_REGEX_ZEUGS;
Denn du erhälst ja einen Skalar beim Zugriff auf ein Array. Diese Schreibeweise mit @Array[$index] beschreibt ein Array-Slicing. Der Code sollte zwar funktionieren, macht aber subtil was anderes als du eigentlich willst. Benutze einfach immer:
use strict;
use warnings;
dann wirst du von perl auch höflich auf sowas hingewiesen:
Scalar value @foo[1] better written as $foo[1] at ...