Ja, das stimmt schon so, wie du es sagst, aber das hast du deinenm Muster so nicht gesagt.
Das erste Muster geht bis zu einem Fragezeichen (das nach "wer") und gibt dir dann den Rest aus, bis zum Ende ($).
Das zweite Muster macht alles vom Anfang (^), bis zu nem Fragezeichen (in dem Fall das nach "ich", weil .* sehr gierig ist) und dann den Rest, bis zum Ende ($).
Das zweite Muster hätte so aussehen sollen, um es passend zu machen:
Das Fragezeichen nach dem * nimmt die Gierigkeit weg und matcht somit nur, bis zum ersten treffer (nach "wer")
perl -Mstrict -Mwarnings -e 'package blub; sub new { bless {} } sub bar {my $self=shift; $self->{bla}="5065726c2d436f6d6d756e697479"; return $self->{bla};} my $foo=blub->new();print "Hallo ";print pack("H*",$foo->bar()); print "\n"'
http://perl-tutor.de