Leser: 25
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
open(MYOUTPUTFILE, ">>$filename"); do{ print "Geben Sie einen Namen ein. [Falls Sie keine mehr wissen, '999' eingeben]\n\n"; $sinput = <STDIN>; chomp ($sinput); $entrytime = gettimeofday() - $CatStarttime; $entryduration = $entrytime - $temptime; $inputlength = length($sinput); # $correctedduration = $entryduration - $inputlength/$keys_per_second; $sinput =~ tr/,/°/; #replace "," with "°" if ($sinput ne "999"){ $counter = $counter + 1; # $globalentrycounter = $globalentrycounter + 1; # no need for global entry } if ($inputlength < 2) { $counter = $counter - 1; #There's no such thing as a free lunch. - Yes there is! # $globalentrycounter = $globalentrycounter - 1; { local( $| )= 1; print "Bitte keine Abkürzungen oder leere Eingaben. Weiter mit der Enter-Taste."; my $resp= <STDIN>; } } print MYOUTPUTFILE "$subjectID, $subjectage, $sex, $CatStarttime, $entrytime, $entryduration, $inputlength, $sinput, $counter, \n"; $temptime = $entrytime; for ($times = 0; $times < 1000; ++$times) { print "\n"; } } while ($sinput ne "999"); close(MYOUTPUTFILE); $synccounter = $synccounter + 1; for ($times = 0; $times < 1000; ++$times) { print "\n"; } print "Sie haben nun das Ende dieses Experiments erreicht.\n"; print "Sie haben CHF $counter Namen eingegeben.\n"; print "Bitte wenden Sie sich an die/den VersuchsleiterIn.\n\n\n\n";
QuoteDer unten aufgeführte Code (resp. dessen Ende) beendet nicht so, wie ich das will
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
#!/usr/bin/perl # wie schon gesagt use strict; use warnings; use Time::HiRes qw(gettimeofday); my $filename='./input_experiment.txt'; my $CatStarttime=gettimeofday(); my $temptime=0; my $counter=0; my $globalentrycounter=0; my $subjectID=1; my $subjectage=20; my $sex='male'; my $keys_per_second=5; my $synccounter=0; # Bitte Fehlerbehandlung nicht vergessen # und die dreiparameterige form von "open" nutzen # damit vermeidet man mögliche Fehler. open(my $outputfh, ">>", $filename) or die "ERROR open $filename"; print "Geben Sie einen Namen ein. [Falls Sie keine mehr wissen, '999' eingeben]\n\n"; while (1) { my $sinput = <STDIN>; chomp ($sinput); my $entrytime = gettimeofday() - $CatStarttime; my $entryduration = $entrytime - $temptime; my $inputlength = length($sinput); # my $correctedduration = $entryduration - $inputlength/$keys_per_second; #replace "," with "°" $sinput =~ tr/,/°/; # schleife beenden last if($sinput eq '999'); if($inputlength > 1) { $counter++; # no need for global entry # $globalentrycounter++; print $outputfh "$subjectID, $subjectage, $sex, $CatStarttime, $entrytime, $entryduration, $inputlength, $sinput, $counter, \n"; } else { local $| = 1; print "Bitte keine Abkürzungen oder leere Eingaben. Weiter mit der Enter-Taste."; <STDIN>; } $temptime = $entrytime; # clear screen? print "\n" for (1..1000); } close($outputfh); $synccounter = $synccounter + 1; # clear screen? print "\n" for (1..1000); print "Sie haben nun das Ende dieses Experiments erreicht.\n"; print "Sie haben CHF $counter Namen eingegeben.\n"; print "Bitte wenden Sie sich an die/den VersuchsleiterIn.\n\n\n\n";
2009-08-07T11:51:23 topegErstmal nutzt du
"use strict;" unde "use wrnings;"
1
2
3
print "Sie haben nun das Ende dieses Experiments erreicht.\n";
print "Sie haben $counter Namen eingegeben.\n";
print "Bitte wenden Sie sich an die/den VersuchsleiterIn.\n\n\n\n";
Guest Hummelmann[...]
@betterworld: könntest Du mir einen direktlink geben? Ich habe sicher 1h in der FAQ rumgestöbert (und werde es zukünftig noch öfters machen, ist wirklich gut erklärt) und nichts zu dem Problem gefunden.
[..]
Guest Hummelmann@betterworld: könntest Du mir einen direktlink geben? Ich habe sicher 1h in der FAQ rumgestöbert (und werde es zukünftig noch öfters machen, ist wirklich gut erklärt) und nichts zu dem Problem gefunden.
Quotedoch auch hier schliesst das DOS-Fenster zu früh
QuoteWAIT Startet die Anwendung und wartet auf das Ende.
Befehl/Programm
Wenn ein interner Befehl oder eine Batchdatei verwendet wird,
wird das neue CMD-Fenster mit Parameter /K gestartet.
Das bedeutet, dass das Fenster erhalten bleibt, nachdem der
Befehl ausgeführt wurde.
Wenn dies nicht der Fall ist, wird das Programm entweder
als Anwendung in einem Fenster oder als Konsolenanwendung
gestartet.
2009-08-09T09:23:20 freddySicher, aber das Skript so nicht.Normalerweise kann man unter Windows eine DOS-Box auch mittels start öffnen.
1
2
3
4
5
6
7
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Perl\shell\Run in Console]
@="In Konsole starten"
[HKEY_CLASSES_ROOT\Perl\shell\Run in Console\command]
@="cmd.exe /K prompt [Perl]~ && perl \"%1\""
2009-08-10T09:31:46 ?Damit bei mir im System unter Windows PerlSkripte in der offengehaltenen Konsole gestartet werden können, habe ich ein Kontextmenüeintrag gemacht.