The regexp should probably be run against $text, not $shape.
you should not need the in in your foreach loop
You said the print is printing nothing ... are you seeing the new lines ? (maybe nothing = 18 ?)
Last time i worked with Power Point (a month or so ago), i resorted to using perl -d, putting a break at a line similar to your foreach, and then using Data::Dumper to poke around for the text box i needed (which ended up being $Presentation->Slides(1)->Shapes->Title->TextFrame->TextRange->{Text})