Thread Problem mit dem Einlesen (55 answers)
Opened by Gast at 2006-05-17 13:33

renee
 2006-05-26 10:48
#7632 #7632
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Ich würde Dir zur Verwendung von CPAN:DBI mit CPAN:DBD::mysql raten:

Code: (dl )
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
use strict;
use warnings;
use DBI;
use FindBin ();

my $DB_TABLE = "drow_dictionary";
my $LANG0 = "Drow";
my $LANG1 = "Common";
my $NOTES = "Notes";


require "drow_pwx.pl"; # Contains database credentials

loadDictionary( "words.txt" );


sub loadDictionary {
my( $DICTFILE ) = $FindBin::RealBin . $_[0];
my @lines;

# Read in the dictionary into memory
print "Reading file '$DICTFILE'...";
open( DICTFILE,'<', $DICTFILE ) || die( "Couldn't open file: $!" );;
my( @filelines ) = <DICTFILE>;
close( DICTFILE );
foreach $line (@filelines) {
push( @lines, $line ) if( $line =~ m/\w/ );
}
@filelines = ();

print (0+@lines)." lines read.\n";
print "Sorting...";
@lines = sort( @lines );
print "Done.\n";

# Setup Database Connection
my $dbh = DBI->connect("DBI:mysql:$DATABASE:localhost", $DB_USERNAME, $DB_PASSWORD ) ||
die( "Could not establish database connection: ".$DBI::errstr );
$dbh->do( "delete from $DB_TABLE" );

# Cycle through lines, adding them into database
my( $query ) ="insert into $DB_TABLE ($LANG0, $LANG1, $NOTES) values (?,?,?) ";
my $sth = $dbh->prepare($query);

foreach $line (@lines ) {
my( $notes ) = "";
# Simple word0=word1 line
$line =~ s/\`/\'/g; # Change back-quotes to normal quotes
$line =~ s/\_/\ /g; # Change underscores to spaces
$line =~ s/\+/\ /g; # Change plusses to spaces
if( $line =~ m/^([\w\-\'\s\,\+]*)\=(.*)/ ) {
$word1 = $1;
$word2 = $2;

# Get rid of email address of contributed words
if( $word2 =~ m/\=/ ) {
$word2 = $`;
}

# Extract notes if any
if( $word2 =~ m/\((.*)\)/) {
$notes = $1;
$notes =~ s/\'/\\\'/g;
$word2 = $`;
}

# Split if it has commas
my( @words1, @words2 );
if( $word1 =~ m/\,/ ) {
@words1 = split( ',', $word1 );
} else {
@words1 = ($word1);
}
if( $word2 =~ m/\,/ ) {
@words2 = split( ',', $word2 );
} else {
@words2 = ($word2);
}

# Do all combinations if has commas
foreach $word1 (@words1) {
foreach $word2 (@words2) {
$word1 = &trim( $word1 );
$word2 = &trim( $word2 );
if( $notes eq "" ) {
$sth->execute($word1,$word2,undef);
}
else {
$sth->execute($word1,$word2,$notes);
}

}
}
} else {
warn( "Can't parse line ==$line==\n" );
}
}

}


# Trims whitespace off start and end of string
sub trim{
my( @asz, $sz ) = @_;

foreach $sz (@asz){
$sz =~ s/^\s*(.*)$/$1/;
($sz = $`) if ($sz =~ m/\s*$/);
}
return wantarray() ? @asz : $asz[0];
}
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread Problem mit dem Einlesen