Thread mehrere Zahlen vergleichn mit Häufigkeit (5 answers)
Opened by Gast at 2007-01-25 19:04

Dubu
 2007-01-27 03:37
#73611 #73611
User since
2003-08-04
2145 Artikel
ModeratorIn + EditorIn

user image
Eigentlich sollte doch nicht nach bestimmten Verlagsnummern gesucht werden, sondern vielleicht sortiert nach Verlagsnummern ausgegeben werden, die eben auch mehrfach vorkommen, oder?

Eventuell in der Art:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
#!/usr/bin/perl
use strict;
use warnings;

# Diverse ISBN-13 ("Bookland"-EAN-Format)
my @isbns = qw/
   978-1-56592-243-3
   978-0-596-00173-5
   978-3-8273-1812-1
   978-3-89721-109-4
   978-3-8272-6153-3
   978-3-89721-142-1
   /;

# Dies wird ein Hash of Arrays mit den ISBNs nach Verlag
my %isbns_by_publisher;

for my $isbn (@isbns) {
   # Kopiere ISBN und loesche in der Kopie alles, was keine Ziffer ist
   (my $clean_isbn = $isbn) =~ tr/0-9//cd;
   # Check auf korrekte Laenge
   if (length $clean_isbn != 13) {
       warn "not a valid ISBN-13: $isbn\n";
       next;
   } else {
       # ISBN dem zugehoerigen Array im Hash hinzufuegen.
       # Schluessel ist der Code des entsprechenden Verlags,
       # Verlag ist in den Ziffern 5-8 der ISBN-13
       push @{$isbns_by_publisher{substr $clean_isbn, 4, 4}}, $isbn;
   }
}

for my $key (sort keys %isbns_by_publisher) {
   print "Verlagsschluessel $key:\n";
   print "$_\n" for @{$isbns_by_publisher{$key}};
   print "\n";
}

Ausgabe:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Verlagsschluessel 5659:
978-1-56592-243-3

Verlagsschluessel 5960:
978-0-596-00173-5

Verlagsschluessel 8272:
978-3-8272-6153-3

Verlagsschluessel 8273:
978-3-8273-1812-1

Verlagsschluessel 8972:
978-3-89721-109-4
978-3-89721-142-1

View full thread mehrere Zahlen vergleichn mit Häufigkeit