Hallo Leute,
ich habe eine Frage, und zwar habe ich ein Program, mit welchem ich 13 stellige isbn zahlen einlese (per eingabe). Diese speichere ich in ein Array und sortiere dieses Array! Die Ausgabe erfolgt logischerweise ebenfalls sortiert.
Nun möchte ich aber die eingegeben Zahlen prüfen, wieviele isbn-nummern an den stellen (5 bis 8 --> Verlagsnummer) gleich sind und welche Verlagsnummer das ist.
Kann mir da jemand helfen? 
Vielen Dank im Vorraus!
Mike
 
User since
2005-01-17
14875
Artikel
Admin1
![[Homepage]](/battie/theme/default/homepage.gif) 
 
 
Ganz "böse Programmier- und Denkfaule" nehmen irgendein ISBN-Modul von CPAN ;) 
Na ja, mag jetzt vielleicht zu viel sein, aber wenn das Programm später mehr können soll.
Es sei denn, die Frage oben ist jetzt nur zwecks des Lerneffekts wegen.\n\n
<!--EDIT|GwenDragon|1169811448-->
 
User since
2003-08-04
14371
Artikel
ModeratorIn
![[Homepage]](/battie/theme/default/homepage.gif) 
![[default_avatar]](/battie/theme/default/default_avatar.gif) 
 
Die ISBN-Module helfen aber nicht bei der substr-Sache... (jedenfalls habe ich keins gesehen, dass das kann).
 
User since
2003-08-04
2145
Artikel
ModeratorIn + EditorIn
 
 
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:
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:
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