#!/usr/bin/perl use strict; use warnings; use Data::Dumper; my @results; while(){ $_ =~ s/'.*?'//sg; my @scalars = $_ =~ /(?:(\$\w+(?:->)?(?:\[\$?\w+\]|{\$?\w+}))|(\${\w+})|(\$\w+))/g; push(@results,{$. => [grep{defined}@scalars]}); } print Dumper(\@results); _ _DATA_ _ $foo ${foo} $foo[2] $foo{test} $foo->{bar} $foo->[5] "$foo" "$foo askjlksdf" '$foo' 'asdkjlsdf $fool ' Dies ist eine $variable eine $variable und noch "$eine" und '$keine' und ne $referenz->{$key}