1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
#perl use warnings; use strict; my %hash = ( foo1 => 'test', foo2 => 'test2', ); foreach my $k ( grep {$_ =~ /^foo(\d+)$/} keys %hash ) { # Hier hätte ich gern Zugriff auf $1 im Schleifenkopf # Geht das? }
1 2 3 4 5 6 7 8 9 10 11 12 13
#perl use warnings; use strict; my %hash = ( foo1 => 'test', foo2 => 'test2', ); for my $k (keys %hash) { next unless(/^foo(\d+)$/); # $1 in der Schleife verfügbar }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
#! /usr/bin/perl use strict; use warnings; my %hash = ( foo1 => 'test', foo2 => 'test2', ); for my $k (keys %hash) { next unless( my ($id) = $k =~ /^foo(\d+)$/ ); # $id entspricht $1 des regex matchings print $id, "\n"; }
2012-12-05T14:01:58 topegDer Ansatz ist schon nicht der beste. Du hast zwei schleifen wo du nur eine brauchst. Auch grep ist eine Schleife.
2012-12-05T15:11:20 pqsort ist sort und keine schleife. worauf zielt deine frage ab?
2012-12-05T15:19:57 pqaber wo willst du denn das sort stattdessen machen? in der schleife ist es ja zu spät.
1 2 3 4 5 6 7 8 9 10 11
use Benchmark; my $anzahl_tests = 10_000; Benchmark::cmpthese ( $anzahl_tests, 'Code 1' => sub { #hier der eine Testcode }, 'Code 2' => sub { #hier der andere Testcode } );