PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Perl Zahlen suchen



klaus_harrer
20-04-2004, 04:29
Hallo

Ich möchte eine oder mehrere Zahlen aus einer Variablen in der ein String gespeichert ist auslesen



$font = "Verdana 60"

my ($size) = ($font=~ /(\d+)/);



Ich wollte Fragen ist die Syntax so richtig und wenn ja, warum gibt Perl nur eine 0 als Rückgabe?

MfG
Klaus

Thomas Engelke
20-04-2004, 07:36
Ich bin mir nicht sicher, wo genau dein Problem liegt, aber in $size befindet sich bei mir nach der Ausführung des Programmes die Zahl 60. Vielleicht versiehst du die erste Zeile mal mit einem Semikolon und versuchst es nocheinmal.

AD!

klaus_harrer
20-04-2004, 17:31
Hallo

Ist richtig, aber ich habe nicht alles gepostet. Es handelt sich um Gimp Perl




#!/usr/bin/perl -w

use Gimp ":auto";
use Gimp::Fu;

sub create_grunge_text{
my ($img, $layer, $text, $font, $font_size, $color) = @_;

$img->gimp_image_undo_group_start;

my $border = 10;
my ($size) = ($font=~ /(\d+)/);
#Generate a text layer
my $text_layer = gimp_text_fontname($img, -1, 0, 0, $font, $border, 1, $size, POINTS, $text);

#select the text
Gimp->gimp_selection_layer_alpha($text_layer);

# Set foreground color
Gimp->gimp_palette_set_foreground($color);

#fill the Text with foreground color
Gimp->gimp_edit_fill($text_layer, 0);


$img->gimp_image_undo_group_end;

return();
}
register
"grunge_layer", #fill in name
"create a dirty Text", #a small description
"Help", #a help text
"Klaus Harrer", #my name
"Klaus Harrer (c)", #copyright
"2004-04-06", #date
"<Image>/Filters/Text/Grunge_Text...", #menu path
"*", #Images types
[
[PF_FONT, "font", "font", "Verdana 60"],
[PF_STRING, "text", "input text", "Grunge"],
[PF_INT, "font_size", "font size", 40],
[PF_COLOR, "color", "text color", [118,98,66]],
\&create_grunge_text;
Gimp::set_trace(TRACE_ALL);
exit main();




Ich habe den code Rot markiert um den es geht. Das Problem "TRACE_ALL" gibt für $size den Wert 0 zurück.

MfG
Klaus

fork
20-04-2004, 18:13
Steht auch wirklich "Verdana 60" in $font drin nach der Parameteruebernahme?

klaus_harrer
20-04-2004, 18:48
Hallo

Das kann ich nicht sagen, da ich noch ziemlich am Anfang stehe "Gimp Perl" zu lernen. Gibt es über Perl eine Möglichkeit die Variable $font zu überprüfen(ausser "print",habe ich schon probiert, habe ich nich hinbekommen).

MfG
Klaus

fork
20-04-2004, 18:58
print geht nicht?

print "FONT: $font\n";
$img->gimp_image_undo_group_start( );
$img->gimp_image_undo_group_end( );
Fehlen da nicht die Klammern?

Ach ja, das kann auch nix Schaden

use strict;
use diagnostics;

Das ist also eine Erweiterung zu Perls-Gimp Modulen bzw. ein neues eigenes Modul. Muesste da nicht irgendwo eine "Package"-Anweisung stehen(Festlegung des aktuellen Namensraumes)?

klaus_harrer
20-04-2004, 19:38
Hallo

Das mit den Klammern habe ich von einen anderen Script übernommen. Wird wohl ein schlampiger Programmierstil sein. Nun habe ich auch herausgefunden warum $size eine 0 zurückgibt. Du hast da den richtigen Riecher gehabt. Die Variable $font gibt den text zurück "Grunge" und die Variable $text gibt den Font "Verdana 60" zurück. Ich weiß nicht warum das vertauscht wird. Wird wahrscheinlich ein Bug sein.

MfG
Klaus

fork
20-04-2004, 19:50
> Wird wohl ein schlampiger Programmierstil sein.
Perl ist halt für flinke Finger ;) Auf diesen Programmierstil spezialisier ich mich auch grad'

> Ich weiß nicht warum das vertauscht wird.
Begründung mit vier Buchstaben: isso

klaus_harrer
20-04-2004, 19:59
Hallo

Danke für den Tip. Jetzt funzt das Script soweit. Gibt es eine deutsche Hilfe zu




use strict;
use diagnostics;


MfG
Klaus

fork
20-04-2004, 20:19
use string erzwingt Regeln die schlechten Programmierstil zu Fehler werden lassen(zwingende Variablendeklaration, ...)

use diagnostics zeigt bei Warnings zusaetzlich noch Hilfetexte an.

Fuer genauere Informationen fragen Sie bitte Ihre Hotline oder Suchmaschine.