#!/usr/bin/env perl #=============================================================================== # # FILE: skript1.pl # # USAGE: ./skript1.pl # # DESCRIPTION: # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Stefan Suhren (su), suhren.stefan@fh-swf.de # ORGANIZATION: FH Südwestfalen, Iserlohn # VERSION: 1.0 # CREATED: 22.10.2015 17:02:35 # REVISION: --- #=============================================================================== use strict; use warnings; use utf8; # enforce utf-8 mode binmode (STDIN, ":encoding(UTF-8)"); binmode (STDOUT, ":encoding(UTF-8)"); binmode (STDERR, ":encoding(UTF-8)"); use open ":encoding(UTF-8)"; my $artikel_file_name = 'artikel-artikelanzahl.txt'; # input file name open my $artikel, '<', $artikel_file_name or die "$0 : failed to open input file '$artikel_file_name' : $!\n"; my $artikelnummer; my $artikelanzahl; my $readlines; my %artikelhash; while (my $line = <$artikel>) { # split lines into values ($artikelnummer,$artikelanzahl) = split /\s+/, $line; $artikelhash{$artikelnummer} += $artikelanzahl; $readlines++; } close $artikel or warn "$0 : failed to close input file '$artikel_file_name' : $!\n"; foreach my $key (sort keys %artikelhash) { printf "%10s : %10s\n", $key, $artikelhash{$key}; } printf "Artikel gelesen: %10d\n", $readlines; printf "Artikel gelspeichert: %10d\n", scalar keys %artikelhash; my $topArtikelCount = 30; my @keys = sort { $artikelhash{$b} <=> $artikelhash{$a} } (keys %artikelhash); printf "\n%5s: %10s %10s\n", "Platz", "Artikel", "Anzahl"; for (my $i = 0; $i < @keys && $i < $topArtikelCount; ++$i) { printf "%5d: %10s %10s\n", $i+1, $keys[$i], $artikelhash{$keys[$i]}; }