#!/usr/bin/env perl #=============================================================================== # # FILE: skript2.pl # # USAGE: ./skript2.pl # # DESCRIPTION: # # OPTIONS: --- # REQUIREMENTS: --- # BUGS: --- # NOTES: --- # AUTHOR: Stefan Suhren (su), suhren.stefan@fh-swf.de # ORGANIZATION: FH Südwestfalen, Iserlohn # VERSION: 1.0 # CREATED: 04.11.2015 12:22:03 # 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 $german_file_name = 'german.lst'; # input file name open my $germanFile, '<', $german_file_name or die "$0 : failed to open input file '$german_file_name' : $!\n"; my %german; while (my $line = <$germanFile>) { $german{uc $line} = 0; } close $germanFile or warn "$0 : failed to close input file '$german_file_name' : $!\n"; my $quadratFile_file_name = 'quadrat.dat'; # output file name open my $quadratFile, '<', $quadratFile_file_name or die "$0 : failed to open input file '$quadratFile_file_name' : $!\n"; my @loesung; while (my $line = <$quadratFile>) { if (exists $german{uc $line}) { push @loesung, uc $line; } } close $quadratFile or warn "$0 : failed to close output file '$quadratFile_file_name' : $!\n"; # sort array @loesung = sort @loesung; # Remove double entries my @loesung_unique; push @loesung_unique, $loesung[0]; foreach my $unique (@loesung) { if ($unique ne $loesung_unique[$#loesung_unique]) { push @loesung_unique, $unique; } } my $loesungFile_file_name = 'loesung.dat'; # output file name open my $loesungFile, '>', $loesungFile_file_name or die "$0 : failed to open output file '$loesungFile_file_name' : $!\n"; print $loesungFile @loesung_unique; close $loesungFile or warn "$0 : failed to close output file '$loesungFile_file_name' : $!\n"; # Plus one as $# only returns the highest field index printf "%d unique words were found", $#loesung_unique+1;