hotti: Array iterieren und Namen vergeben

hi,

siehe Thema, Aufgabenstellung: Die einzelnen Arrayelemente [0], [1] usw sollen Namen bekommen.

Script bisher:

  
#!/usr/bin/perl -w  
# benamste Arrays => Hashref erzeugen  
###########################################################################  
use strict;  
  
my $maps = {  
    0 => 'Tag',  
    1 => 'Monat',  
    2 => 'Jahr',  
};  
my @datum = (7,9,2010);  
  
my $ref = taufe($maps, \@datum);  
  
# Kontrolle obs geklappt hat  
use Data::Dump;  
print Data::Dump::dump $ref; # { Jahr => 2010, Monat => 9, Tag => 7 }  
  
sub taufe{  
    my $maps = shift;  
    my $aref = shift;  
    my $ref = {};  
    for(my $i = 0; $i < scalar(@$aref); $i++){  
       $ref->{$maps->{$i}} = $aref->[$i];  
    }  
    return $ref;  
}  

Die Frage ist: Geht das auch ein klein bischen kürzer, mit map{} oder so?

Horst Buttermilch

--
Wenn der Kommentar nicht zum Code passt, kann auch der Code falsch sein.
  1. hi,

    Die Frage ist: Geht das auch ein klein bischen kürzer, mit map{} oder so?

    die Frage ist doof, weil: wir müssen eher etwas mehr machen, nämlich das hier:

    for(my $i = 0; $i < scalar(@$aref); $i++){
           $ref->{$maps->{$i}} = $aref->[$i] if exists $maps->{$i};
        }

    damits 1. universell wird und 2. auch definiert tut, wenn $maps keine Zuordnung beschreibt. Sorry 4 trouble.

    Hotti

    1. Du brauchst ein bisschen mehr Übung in Funcprog. Arbeite dich durch HOP.

      #!/usr/bin/env perl  
      use strict;  
      use warnings FATAL => 'all';   # bitte nicht mehr -w, was soll denn der Murks  
      use autobox::Core;  
      use Const::Fast qw(const);  
        
      const my %time_units => (  
          0 => 'Tag',  
          1 => 'Monat',  
          2 => 'Jahr',  
      );  
      my %result;  
        
      [7,9,2010]->for(sub {  
          my ($index, $element) = @_;  
          $result{$time_units{$index}} = $element if exists $time_units{$index};  
      });  
      
      
      1. hi,

        Du brauchst ein bisschen mehr Übung in Funcprog. Arbeite dich durch HOP.

        Die Module guck ich mir mal an, danke für die Links!

        Hotti

        1. Du brauchst ein bisschen mehr Übung in Funcprog. Arbeite dich durch HOP.

          Die Module guck ich mir mal an, danke für die Links!

          Vielleicht erstmal die Links angucken ;)

          Struppi.

          1. Du brauchst ein bisschen mehr Übung in Funcprog. Arbeite dich durch HOP.

            Die Module guck ich mir mal an, danke für die Links!

            Vielleicht erstmal die Links angucken ;)

            Nene, "Module" passt schon. CPANs Code braucht nämlich ein weiteres Modul, um das zu machen, was meine Funktion schon macht. Struppi, ich weiß nicht, ob Du schonmal einen "Code als Auftrag zum aus der Hand geben" oder Scripts in einer produktiven Umgebung geschrieben hast. Es ist so, dass Du in diesen Fällen sehr genau prüfen solltest, inwieweit die Installation neuer Module erforderlich ist. Zumindest ist sowas im Vorab zu klären.

            Hotti

            1. CPANs Code braucht nämlich ein weiteres Modul, um das zu machen, was meine Funktion schon macht.

              TIMTOWTDI, ich bevorzuge diese Art und diesen Stil. Es ginge auch mit Coremoduln, aber warum diese Einschränkung, wenn Verständnis und Ausdruckfähigkeit darunter leiden⁈

              in einer produktiven Umgebung […] Es ist so, dass Du in diesen Fällen sehr genau prüfen solltest, inwieweit die Installation neuer Module erforderlich ist.

              Die Antwort darauf lautet: ja, gerne, bitte immer nur her damit! 85000 Module in 20000 Distros, allesamt getestet, warten im CPAN darauf, eingesetzt zu werden. Es ist schierer Wahnsinn, sich diesen ungeheuren Vorteil nicht zu nutze zu machen – dies ist keine Selbstverständlichkeit, andere Sprachen haben das nicht!

              Leute popeln sich die fadenscheinigsten Argumente aus dem Hintern, warum das doch nicht ginge. Ich hab schon die tollsten Sachen gehört, das passt auf keine Kuhhaut. Das Thema wird erschöpfend in einem Kapitel von Modern Perl erörtert werden, aber bis dahin sei jedem Of course you can use CPAN. And here's why. ans Herz gelegt.

              1. hi CPAN;

                in einer produktiven Umgebung […] Es ist so, dass Du in diesen Fällen sehr genau prüfen solltest, inwieweit die Installation neuer Module erforderlich ist.
                Die Antwort darauf lautet: ja, gerne, bitte immer nur her damit! 85000 Module in 20000 Distros, allesamt getestet, warten im CPAN darauf, eingesetzt zu werden. Es ist schierer Wahnsinn, sich diesen ungeheuren Vorteil nicht zu nutze zu machen – dies ist keine Selbstverständlichkeit, andere Sprachen haben das nicht!

                Leute popeln sich die fadenscheinigsten Argumente aus dem Hintern, warum das doch nicht ginge. Ich hab schon die tollsten Sachen gehört, das passt auf keine Kuhhaut. Das Thema wird erschöpfend in einem Kapitel von Modern Perl erörtert werden, aber bis dahin sei jedem Of course you can use CPAN. And here's why. ans Herz gelegt.

                Da bin ich voll und ganz bei Dir!!!!! Solche Diskussionen kenne ich auch, leider. Ich hatte das Glück, ein paar Jahre machen zu können, was ich wollte, es war _mein_ Server. Das hat sich schlagartig geändert, als meine Scripts auf eine produktive AIX umziehen mussten. Die AIX, das Heiligthum der Firma. Mannohmann, was musste ich da betteln, ne bash zu kriegen, Mails bis hin zum Vorstand ;-)

                Viele Grüße,
                Horst Heimlich

    2. Die Reihenfolge von Hashkeys ist nicht garantiert!

      mfg Beat

      --
      ><o(((°>           ><o(((°>
         <°)))o><                     ><o(((°>o
      Der Valigator leibt diese Fische
      1. Die Reihenfolge von Hashkeys ist nicht garantiert!

        Macht nüschd, dafür hab ich die {Namen} ;-)

        Also mal ernsthaft, PHP ist an dieser Stelle echt komfotabler als Perl.

        Sch?ne Gr??e,
        Horst Leberwurst