#!/usr/bin/env perl #=============================================================================== # # FILE: Buchstabenrätzel.pl # # USAGE: ./Buchstabenrätzel.pl # # DESCRIPTION: Testet zwei Wort listen auf gleiche vorkommen. # # 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: 28.10.2015 08:43:14 # 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 $wolistfp_file_name = 'german.lst'; # input file name my $infifp_file_name = 'quadrat.dat'; # input file name my $outputFile = "loesung.dat"; #hash mit Deutschen Wörtern aus german.list my %german; my @loesung; my @loesung_unique; #==================================================================================== # Wörter list lesen german.lst #==================================================================================== print "Wörter liste lesen...\n"; open my $wolistfp, '<', $wolistfp_file_name or die "$0 : failed to open input file '$wolistfp_file_name' : $!\n"; while (my $word = <$wolistfp>) { $word = uc $word; $german {$word} = $word; } close $wolistfp or warn "$0 : failed to close input file '$wolistfp_file_name' : $!\n"; #==================================================================================== # lese quadrat.dat #==================================================================================== print "Lese Input Datei...\n"; open my $infifp, '<', $infifp_file_name or die "$0 : failed to open input file '$infifp_file_name' : $!\n"; while ( my $line = <$infifp>) { #Wenn ein Deutsches Wort (german.list) füge zu lösung hinzu. push (@loesung, $line) if exists $german {$line}; } close $infifp or warn "$0 : failed to close input file '$infifp_file_name' : $!\n"; print "Feld Sortiren...\n"; @loesung = sort @loesung; print @loesung . " Wörter gefunden!\n"; #==================================================================================== # Entferne dopelte #==================================================================================== print "entferen dopelte...\n"; my $count = 0; push @loesung_unique, $loesung[$count]; foreach ( @loesung) { if ($loesung_unique[-1] ne $_) { push @loesung_unique, $_; } } #==================================================================================== # Schrebie in Ausgabedatei loesung.dat #==================================================================================== print "Schreibe in Ausgabedatei\n"; my $opfp_file_name = 'loesung.dat'; # output file name open my $opfp, '>', $opfp_file_name or die "$0 : failed to open output file '$opfp_file_name' : $!\n"; print $opfp @loesung_unique; close $opfp or warn "$0 : failed to close output file '$opfp_file_name' : $!\n"; print @loesung_unique . " Wörter ohne doppelte gefunden!\n";