Font
Wiki:Tipp zum Debugging: use Data::Dumper; local $Data::Dumper::Useqq = 1; print Dumper \@var;
[thread]11218[/thread]

Anfänger Frage :)

Readers: 2


<< |< 1 2 >| >> 13 entries, 2 pages
dauerpenn0
 2008-01-31 11:23
#105371 #105371
User since
2008-01-31
7 articles
BenutzerIn
[default_avatar]
Hi,

leider gibt es hier keine "Newbie Forum" also störe ich mal hier :)

use strict;

my @in;
my $h;

print "input\n";
chomp($h= <STDIN>);
push @in, $h;

print @in[1];

foreach $_(@in)
{
if($_ eq 'j' or $_ eq 'a')
{
print "ok";
}
}

folgendes soll passieren:
es soll stdin eingelsen werden, nach möglichkeit ein zeichen pro "arrayfeld" (was ja atm nicht geschieht) unten in "foreach" soll dann feld für feld geguckt werden was drin steht und wenn übereinstimmt ein ok ausgegeben werden.

folgendes passiert: ;)
wie man schon sieht geht es nicht, das die einzelnen zeichen alle zusammen in ein array feld gepackt werden, wie krieg ichs jetzt hin dass sie aber jeweils in eins gepackt werden?

btw: kennt jmd ein gutes tutorial inklusive übeungen/aufgaben was sinnvoll ist für den anfang (nicht für den anfang?) hab bissl vorkenntnisse von C und allgemein ein gutes verständniss für alles was mit IT zusammenhängt ;) darf ein bisschen anspruchsvoller sein.

grüße
renee
 2008-01-31 11:42
#105372 #105372
User since
2003-08-04
14371 articles
ModeratorIn
[Homepage] [default_avatar]
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
use strict;

print "input\n";
chomp(my $h= <STDIN>);
my @in = split( //, $h );

# wenn Du auf ein einzelnes Element zugreifen willst, dann wird aus dem @ ein $
print $in[1]; 

foreach (@in){ # $_ wird automatisch verwendet
    if($_ eq 'j' or $_ eq 'a'){
        print "ok";
    }
}


ungetestet
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/
dauerpenn0
 2008-01-31 12:23
#105376 #105376
User since
2008-01-31
7 articles
BenutzerIn
[default_avatar]
dankö...gleich mal checken
#Kein Kommentar
 2008-01-31 13:33
#105382 #105382
User since
2007-06-09
575 articles
HausmeisterIn
[default_avatar]
jetzt mal kurz nachgefragt gibt es für if($_ eq 'j'){ schon eine kürzere syntax? es wäre doch cool, wenn die if-bedingung automatisch auf $_ zugreifen würde, wenn keine variable angegeben ist.

so wie:
Code: (dl )
if (/hallo/){


gibt's das?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
styx-cc
 2008-01-31 13:38
#105383 #105383
User since
2006-05-20
532 articles
BenutzerIn

user image
Code: (dl )
if (/^\Q$var\E$/){

sonst faellt mir nichts ein
Pörl.
havi
 2008-01-31 13:49
#105385 #105385
User since
2003-08-04
2036 articles
BenutzerIn
[Homepage]
user image
#Kein Kommentar+2008-01-31 12:33:59--
jetzt mal kurz nachgefragt gibt es für if($_ eq 'j'){ schon eine kürzere syntax? es wäre doch cool, wenn die if-bedingung automatisch auf $_ zugreifen würde, wenn keine variable angegeben ist.

so wie:
Code: (dl )
if (/hallo/){


gibt's das?

Code: (dl )
1
2
3
4
5
6
7
8
9
10
#!/usr/bin/perl

use warnings;
use strict;

$_ = "AA";

if (/^AA$/) {
print "hallo";
} # if
#Kein Kommentar
 2008-01-31 14:22
#105393 #105393
User since
2007-06-09
575 articles
HausmeisterIn
[default_avatar]
ja, gut das sind jetzt regexe, ich meine, ob der vergleichsoperator (z.B 'eq') erkennen kann, ob er auf $_ prüfen soll. aber glaube das ist mit 5.8.8 nicht machbar.... wie sieht es mit perl 5.10 und vor allem perl 6 aus?
Gerade weil wir alle in einem Boot sitzen, sollten wir froh sein, dass nicht alle auf unserer Seite sind
murphy
 2008-01-31 15:08
#105402 #105402
User since
2004-07-19
1776 articles
HausmeisterIn
[Homepage]
user image
Bei Perl 5.10 verhält sich das Switchkonstrukt etwa so:
Code (perl): (dl )
1
2
3
given (...) {
  when ('string') { say 'matched' }
}

entspricht
Code (perl): (dl )
1
2
3
4
{
  local $_ = ...;
  if ($_ ~~ 'string') { say 'matched' }
}

und ~~ entspricht bei zwei Stringoperanden eq.

Außer innerhalb eines given-Blockes, darf das when-Konstrukt innerhalb einer foreach-Schleife eingesetzt werden und der ~~ ist extrem magisch, so dass man deine Schleife in Perl 5.10 äquivalent auch so schreiben könnte:
Code (perl): (dl )
1
2
3
4
5
foreach (@in) {
  when (['j', 'a']) {
    print 'ok';
  }
}

When C++ is your hammer, every problem looks like your thumb.
dauerpenn0
 2008-01-31 15:15
#105403 #105403
User since
2008-01-31
7 articles
BenutzerIn
[default_avatar]
ohne jetzt stören zu wollen ;))

...kennt jmd ein tutorial für fortgeschrittene?
am besten mit Beispiel aufgaben und so...

Was wäre den ein erstes gutes "Gap" um meine Kenntnisse zuvertiefen, also etwas praxis taugliches?

ich wollte so in die richtung windows skripting und datenbanken gehen...

Grüße
havi
 2008-01-31 16:04
#105405 #105405
User since
2003-08-04
2036 articles
BenutzerIn
[Homepage]
user image
<< |< 1 2 >| >> 13 entries, 2 pages



View all threads created 2008-01-31 11:23.