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

Frage zu Code Fragment



<< >> 7 Einträge, 1 Seite
Gast Gast
 2007-09-18 12:48
#99588 #99588
Hallo zusammen,
was machen die folgenden Codefragmente.
Ich bin neu in Perl habe jedoch schon erfahrung mit Java und C.

Code (perl): (dl )
$opt{$arg} = 1;


oder
Code (perl): (dl )
$opt{$arg} = shift( @ARGV );


Bei dem 1. und 2. Fragment hat $arg einen inhalt

mfg
renee
 2007-09-18 12:57
#99589 #99589
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Das setzt den Wert in einem Hash...

Beispiele:
Code (perl): (dl )
1
2
3
my %opt;
my $arg = 'Schluessel';
$opt{$arg} = 1;


Jetzt gibt es einen Eintrag im Hash mit dem Schlüssel "Schluessel" und dem Wert "1".

Code (perl): (dl )
1
2
3
4
5
#!/usr/bin/perl

my %opt;
my $arg = 'Parameter';
$opt{$arg} = shift @ARGV;
Wenn Du das Programm mit "perl skript.pl test" aufrufst, hast Du einen Hasheintrag mit dem Schlüssel "Parameter" und dem Wert "test"...
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/
Gast Gast
 2007-09-18 13:00
#99590 #99590
ahhhhhhhhhhhhhhhh alles klar. Vielen dank!!!!!
Sowas in der richtung habe ich mir schon fast gedacht.
Nur im zusammenganh mit hash habe ich immer was
mit %name gelesen das hat mich wohl was verwirrt.

Danke nochmal

mfg
Taulmarill
 2007-09-18 13:30
#99591 #99591
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
Das Sigil - also das Symbol vor dem Variablennamen - gibt bei Perl 5 an, welcher art die Daten sind, die von der Variable zurückgegeben werden, und nicht welcher art die Variable selbst ist. Da bei $opt{$arg} nur ein einzelner (scalarer) Wert zurückgegeben wird, stellt man das $-Zeichen davor. Dass es sich dabei um einen Hash handelt, erkennt man an den geschweiften Klammern.

Bei Perl 6 ist/wird es dann wieder genau anders herum.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Gast Gast
 2007-09-24 11:53
#99911 #99911
Hallo nochmal,
Hätte da noch 2 fragen,

1)
ich öffne eine datei und lese den inhalt aus. das mache ich mit:
Code (perl): (dl )
1
2
3
4
...
open(READ,"<file>")
chop(@tmp = <READ>)
...


leider wird hierbei ja das letzte zeichen abgeschnitten.
Gibt es eine möglichkeit den inhalt aus der textdatei anders
in das Array tmp zu kopieren ohne das das letzte zeichen entfernt wird?

2)
Wann wird in diese elsif gesprungen?
in arg steht ein filename
Code (perl): (dl )
1
2
3
4
5
6
elsif (-f $arg)

#solche sachen sind klar:
if ($arg =~ irgendeinemregexp)
#oder
if($arg eq "help")


Wenn in der klammer (-f filename.txt) steht?

mfg
renee
 2007-09-24 12:12
#99912 #99912
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Gast+2007-09-24 09:53:24--
Hallo nochmal,
Hätte da noch 2 fragen,

1)
ich öffne eine datei und lese den inhalt aus. das mache ich mit:
Code (perl): (dl )
1
2
3
4
...
open(READ,"<file>")
chop(@tmp = <READ>)
...


leider wird hierbei ja das letzte zeichen abgeschnitten.
Gibt es eine möglichkeit den inhalt aus der textdatei anders
in das Array tmp zu kopieren ohne das das letzte zeichen entfernt wird?


Mit Newline-Zeichen am Ende:
Code (perl): (dl )
1
2
3
4
...
open(READ,"<file>")
@tmp = <READ>;
...


Newline-Zeichen am Ende jeder Zeile entfernen (aber nur wenn eins vorhanden ist):
Code (perl): (dl )
1
2
3
4
...
open(READ,"<file>")
chomp(@tmp = <READ>)
...
(man beachte das m!)

Quote
2)
Wann wird in diese elsif gesprungen?
in arg steht ein filename
Code (perl): (dl )
1
2
3
4
5
6
elsif (-f $arg)

#solche sachen sind klar:
if ($arg =~ irgendeinemregexp)
#oder
if($arg eq "help")


Wenn in der klammer (-f filename.txt) steht?

mfg


In den "elsif"-Zweig wird gesprungen, wenn "-f $arg" wahr ist. Es ist wahr, wenn in $arg ein Dateiname einer existierenden Datei steht. siehe auch perldoc -f -X
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/
pktm
 2007-09-24 12:40
#99913 #99913
User since
2003-08-07
2921 Artikel
BenutzerIn
[Homepage]
user image
Sehr schön finde ich da auch das Modul CPAN:FileHandle. Auch wenn ich nicht unbedingt der große Fan davon bin Objektorientierung immer und überall einzusetzen erscheint es mir da doch angebracht, weil der COde schön leserlich wird.
http://www.intergastro-service.de (mein erstes CMS :) )
<< >> 7 Einträge, 1 Seite



View all threads created 2007-09-18 12:48.