#!/usr/bin/env perl #=============================================================================== # # FILE: lagerVerwerwaltung.pl # # USAGE: ./lagerVerwerwaltung.pl # # DESCRIPTION: # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Martin Talarczyk (MT), talarczyk.martin@fh-swf.de # ORGANIZATION: FH Südwestfalen, Iserlohn # Matrikel-Nr.: 10036162 # VERSION: 1.0 # CREATED: 27.10.2015 17:47:22 # REVISION: --- #=============================================================================== use strict; use warnings; use utf8; binmode (STDIN, ":encoding(UTF-8)"); binmode (STDOUT, ":encoding(UTF-8)"); binmode (STDERR, ":encoding(UTF-8)"); use open ":encoding(UTF-8)"; #------------------------------------------------------------------------------- # Variabelen Deklarasion #------------------------------------------------------------------------------- my %artikelHash; my $artikelNummer; my $artikelAnzahl; my $redeline; my $platz = 0; my @keys; #------------------------------------------------------------------------------- # Datei artikel-artikelanzahl.txt einlesen und in Hash schreiben. #------------------------------------------------------------------------------- my $opfp_file_name = 'artikel-artikelanzahl.txt'; # input file name open my $opfp, '<', $opfp_file_name or die "$0 : failed to open input file '$opfp_file_name' : $!\n"; while(my $line = <$opfp>) { ($artikelNummer,$artikelAnzahl) = split /\s+/,$line; $artikelHash{$artikelNummer} += $artikelAnzahl; $redeline++; } close $opfp or warn "$0 : failed to close input file '$opfp_file_name' : $!\n"; #------------------------------------------------------------------------------- # Ausgaben des Hashes sortirt nach Artikelnummer. #------------------------------------------------------------------------------- printf "%s %s \n\n", "Nummer" ,"Anzahl"; foreach my $key ( sort keys %artikelHash ) { printf "%6d %6d \n", $key , $artikelHash{$key}; } #------------------------------------------------------------------------------- # 30 Artikel mit höster Zugrifszahl. #------------------------------------------------------------------------------- @keys = sort {$artikelHash{$b} <=> $artikelHash{$a}} (keys %artikelHash); printf"\nArtikel mit den höchsten Zugriffszahlen\n"; printf"%s : %s%10s\n", "Platz", "Artikel", "Bestand"; for(my $i = 0; $i < 30 && $i < scalar @keys ; $i++) { printf "%5s : %7s%10s\n", $platz, $keys[$i], $artikelHash{$keys[$i]}; $platz++; } printf "%s Artikel im Bestand.\n%s Artikel in der Liste.\n", scalar keys %artikelHash, $redeline;