Font
[thread]7498[/thread]

Formatausgabe in Variable: und nicht auf STDOUT



<< >> 9 entries, 1 page
macMeck
 2005-11-26 00:20
#60423 #60423
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
Hi,

ich hab mich grade mal an den Formaten in Perl versucht. Und bin irgendwie kläglich an meinem Unternehmen gescheitert. Die Formatierung an STDOUT, bzw. in ein File funktioniert. Aber ich möchte das Ergebnis des ganzen eigentlich in einer Variable haben. Die Doku bietet dazu folgendes Workaround:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use Carp;
sub swrite {
croak "usage: swrite PICTURE ARGS" unless @_;
my $format = shift;
$^A = "";
formline($format,@_);
return $^A;
}

$string = swrite(<<'END', 1, 2, 3);
Check me out
@<<< @||| @>>>
END
print $string;

Funktioniert soweit, aber nur, wenn man das Format so wie im Beispiel direkt unter dem swrite-Befehl angibt. Was ich möchte ist, das Format weiter oben definieren und dann immer mal wieder einen swrite-Befehl mit den entsprechenden Daten abfeuern.

Geht das irgendwie und kann mir damit jemand helfen?

macMeck
It all works, as long as it's documented!
renee
 2005-11-26 09:27
#60424 #60424
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
schonmal folgendes probiert:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
my $format = q~
Check me out
@<<< @||| @>>>
~;

my $string = swrite($format,1,2,3);
print $string;

sub swrite{
my $format = shift;
$^A = "";
formline($format,@_);
return $^A;
}
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/
macMeck
 2005-11-26 11:07
#60425 #60425
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
Ja, mit solchen und ähnlichen Versuchen hab ich mir die Nacht um die Ohren geschlagen. An sich funktioniert das. Ich habe aber ein relativ komplexes Format, bei dem ich zu den "picture lines" auch "argument lines" brauche. Und damit geht's dann wohl nicht mehr so richtig. Oder verstehe ich da was nicht? Mein Ansatz war der folgende:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
my ($eins, $zwei, $drei);
my $format = q~
Check me out
@<<< @||| @>>>
$eins, $zwei, $drei
~;

$eins = $zwei = $drei = 1;

my $str = &swrite($format);
print $str;


macMeck
It all works, as long as it's documented!
renee
 2005-11-26 11:28
#60426 #60426
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Wie ich schon in einem frueheren Thread sagte, kenne ich mich mit Formaten nicht aus, aber ich wuerde es mal so probieren:
Code: (dl )
1
2
3
4
5
6
7
8
9
10
my ($eins, $zwei, $drei);
my $format = q~
Check me out
@<<< @||| @>>>
~;

$eins = $zwei = $drei = 1;

my $str = swrite($format,$eins,$zwei,$drei);
print $str;



Uebrigens mein Vorschlag scheint zu funktionieren (siehe http://perl.renee-baecker.de/binaer.cgi )
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/
macMeck
 2005-11-26 11:53
#60427 #60427
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
Ja, dein Vorschlag funktioniert, das ist schon klar. Aber leider ohne argument line. Bei meinem Format bin ich damit aber leider ziemlich aufgeschmissen, weil es unter anderem mehrzeilige Textfelder hat. Da kommt man ohne arguments nicht mehr besonders weit.

macMeck
It all works, as long as it's documented!
renee
 2005-11-26 12:04
#60428 #60428
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Hast Du mal geschaut, ob im Wiki:Artikel was steht??

Fuer mich als Format-Anfaenger: Was sind denn diese Arguments?
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/
macMeck
 2005-11-26 17:46
#60429 #60429
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
Mit den Arguments kannst du angeben, welche Variablen für die Ausgabe ins Format geladen werden sollen. perldoc perlform erklärt das, wenn auch nicht besonders gut.
It all works, as long as it's documented!
ptk
 2005-11-26 18:07
#60430 #60430
User since
2003-11-28
3645 articles
ModeratorIn
[default_avatar]
Mit modernen Perls kann man viel leichter einen Filehandle in eine Variable umleiten:
Code: (dl )
1
2
open(my $fh, ">", \$variable);
print $fh "foo"; # "foo" steht jetzt in $variable

Vielleicht funktioniert das auch mit Forms.
macMeck
 2005-11-26 18:39
#60431 #60431
User since
2003-08-04
162 articles
BenutzerIn
[default_avatar]
Na klar funktioniert das!!! War ja mal wieder einfach. Vielen, vielen Dank...
It all works, as long as it's documented!
<< >> 9 entries, 1 page



View all threads created 2005-11-26 00:20.