+ &::status("Dict: wordnet: found ". scalar(@results) ." defs.");
+
+ return if (!scalar @results);
+
+ return @results;
+}
+
+sub Dict_Foldoc {
+ my ($socket,$query) = @_;
+ my @results;
+
+ &::status("Dict: asking Foldoc.");
+ print $socket "DEFINE foldoc \"$query\"\n";
+
+ my $firsttime = 1;
+ my $string;
+ while (<$socket>) {
+ chomp; # remove \r\n
+
+ &::DEBUG("got '$_'");
+ return if /^552 /; # no match.
+
+ last if (/^250/ or /^\.$/); # stats; end of def.
+
+ s/^\s+|\s+$//g; # each line.
+
+ if ($_ eq "") { # sub def separator.
+ $string =~ s/^\s+|\s+$//g; # sub def.
+ $string =~ s/[{}]//g;
+
+ next if ($string eq "");
+
+ push(@results, $string);
+ $string = "";
+ }
+
+ $string .= $_." ";
+ }
+
+ &::status("Dict: foldoc: found ". scalar(@results) ." defs.");
+
+ return if (!scalar @results);
+ pop @results; # last def is date of entry.
+
+ return @results;
+}
+
+sub Dict_web1913 {
+ my ($socket,$query) = @_;
+ my @results;
+
+ &::status("Dict: asking web1913.");
+ print $socket "DEFINE web1913 \"$query\"\n";
+
+ my $string;
+ while (<$socket>) {
+ chop; # remove \n
+ chop; # remove \r
+
+ return if /^552/; # no match.
+
+ last if (/^250/); # stats; end of def.
+ next if (/^151/ or /^150/); # definition and/or retrieval
+
+ s/^\s+|\s+$//g; # each line.
+
+ if ($_ eq "" or $_ =~ /^\.$/) { # sub def separator.
+ $string =~ s/^\s+|\s+$//g; # sub def.
+ $string =~ s/[{}]//g;
+
+ next if ($string eq "");
+
+ push(@results, $string);
+ $string = "";
+ }
+
+ $string .= $_." ";
+ }
+
+ &::status("Dict: web1913: found ". scalar(@results) ." defs.");