Schrift
[thread]12635[/thread]

Parameter in Unterprogrammen..

Leser: 1


<< >> 5 Einträge, 1 Seite
johnh
 2008-10-14 12:45
#115494 #115494
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Hallo zusammen,

ich möchte ein Unterprogramm aufrufen und ein Parameter übergeben. Mein Code sieht folgendermaßen aus:
Code (perl): (dl )
1
2
3
4
5
6
7
open (PlotJ,">$jitter.dat") || die "log.txt file found!";
my @inpud = <PlotJ>;

//
close(PlotJ);

Gnuplot(@inpud); // Mein Unterprogrammaufruf


Code vom Unterprogram
Code (perl): (dl )
1
2
3
4
5
6
sub Gnuplot
{
        my $i;
        for($i=0;$i<@_;$i++){
        print " Inhalt: $_[$i]\n";      
}

Wenn ich aber mein Array mit der for-Schleife durchlaufe, wird der Inhalt nicht ausgegeben, da ich wahrscheinlich keine Werte explizit gespeichert habe mit
Code (perl): (dl )
my @inpud = (2,9,12,43,2,3,1);

zumindest gehe ich davon aus...

Meine Frage ist, wie kann ich den einfach den Inhalt vom Filehandler PlotJ bzw vom Jitter.dat mit dem Parameter übergeben ?

Wäre nett, wenn mir jemand helfen könnte...

grüße,
J
Linuxer
 2008-10-14 12:56
#115496 #115496
User since
2006-01-27
3891 Artikel
HausmeisterIn

user image
Hi,

Du öffnest die Datei zum Schreiben ( > ) und willst dann daraus lesen?
Logikfehler! Damit wird der Array nicht gefüllt werden können.

Du verwendest eine Variable $jitter, um den Dateiname festzulegen; hast aber in der Fehlermeldung einen festen Text "log.txt" als Dateiname... -> Sieht mir etwas wirr aus.

input wird im Allgemeinen mit t geschrieben ;)

Und mir wird nicht klar, was für einen Parameter Du meinst.

Nachtrag:

// leitet in Perl keinen Kommentar ein! -> Fehler.

Die Definition des Unterprogramms Gnuplot enthält ebenfalls noch einen Syntaxfehler; der for-Schleife fehlt die schließende Klammer: }


Code-Vorschlag:
Code (perl): (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
#!/usr/bin/perl
use strict;
use warnings;

my $file = 'jitter.dat';

# datei einlesen
open my $fh, '<', $file or die "$file: $!\n";
my @input = <$fh>;
close $fh;

# zeilenumbrueche entfernen
chomp @input;


Gnuplot( @input );


sub Gnuplot {
        my ( @data ) = @_;

        for my $value ( @data ) {
                print "Inhalt: $value\n";
        }
}

__END__
meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen!
pq
 2008-10-14 13:39
#115499 #115499
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
johnh+2008-10-14 10:45:23--
Code (perl): (dl )
1
2
open (PlotJ,">$jitter.dat") || die "log.txt file found!";
my @inpud = <PlotJ>;

wie linuxer richtig entdeckt hat, öffnest du die datei zum schreiben und liest dann daraus.
wieder mal ein exzellentes beispiel, use warnings zu verwenden, dann hättte perl dir gesagt
"Filehandle PlotJ opened only for output".
du hast ja hier schon mehrere fragen gestellt, ich kann gar nicht glauben, dass dir noch
niemand empfohlen hat, strict und warnings zu verwenden. ich gehe grad mal die threads
durch...
edit: sieht aber so aus. also führe dir bitte unbedingt Wiki:UseStrict
und Wiki:perlintro zu gemüte.
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
johnh
 2008-10-14 14:28
#115500 #115500
User since
2008-10-05
23 Artikel
BenutzerIn
[default_avatar]
Danke euch..

@Linuxer: Das mit Input spielt ja jetzt keine Rolle :-)), wie die Kommentare in Perl gemacht werden weiss ich natürlich auch :-))

Das mit "<" ist natürlich ein dummer Fehler gewesen, ich danke dir für deine Hilfe...

@pg: Danke für den Link. Vorallem "use warnings" wird mir erheblich helfen die Fehler zu suchen...

Viele viele Grüße,
J
pq
 2008-10-14 14:41
#115501 #115501
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
johnh+2008-10-14 12:28:38--
@pg:

pq
Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live. -- Damian Conway in "Perl Best Practices"
lesen: Wiki:Wie frage ich & perlintro Wiki:brian's Leitfaden für jedes Perl-Problem
<< >> 5 Einträge, 1 Seite



View all threads created 2008-10-14 12:45.