Schrift
[thread]7940[/thread]

Semikolon am Ende der Anweisung



<< |< 1 2 >| >> 12 Einträge, 2 Seiten
bloonix
 2006-05-04 17:09
#65548 #65548
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
Code: (dl )
1
2
3
4
5
6
my %file = ( meminfo => '/proc/meminfo' );
my %mem;

open MEM,'<',$file{meminfo} or die "Statistics: can't open $file{meminfo}";
while (<MEM>) { $mem{$1} = $2 if /^(MemTotal|MemFree|Buffers|Cached|SwapTotal|SwapFree):\s*(\d+)/ }
close MEM;


Warum erhalte ich keine Fehlermeldung? In der while-Schleife
hinter der RegEx fehlt doch ein ";" und ich dachte, dass alle
Anweisungen mit einem ";" enden müssen ...

zu schnell geklickt.. kann jemand den Titel nach
"Semikolon am Ende der Anweisung" ändern?
\n\n

<!--EDIT|opi|1146748253-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
pq
 2006-05-04 17:14
#65549 #65549
User since
2003-08-04
12208 Artikel
Admin1
[Homepage]
user image
ein semiokolon ist ein anweisungs-trenner. er gehört nicht zu einer
anweisung.
da es im block nur eine anweisung gibt, braucht auch nichts getrennt
zu werden.
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
Taulmarill
 2006-05-04 17:15
#65550 #65550
User since
2004-02-19
1750 Artikel
BenutzerIn

user image
nein, müssen sie nicht. durch die schliessende geschweifte klammer weiss perl, dass es sich um das ende des blocks handelt. afaik kann man das semikolon bei allen blöcken am ende weglassen.
man könnte also sagen, dass anweisungen nich mit einem semikolon ebgeschlossen, sondern voneinander getrennt werden müssen.
$_=unpack"B*",~pack"H*",$_ and y&1|0& |#&&print"$_\n"for@.=qw BFA2F7C39139F45F78
0A28104594444504400 0A2F107D54447DE7800 0A2110453444450500 73CF1045138445F4800 0
F3EF2044E3D17DE 8A08A0451412411 F3CF207DF41C79E 820A20451412414 83E93C4513D17D2B
Matze
 2006-05-04 17:19
#65551 #65551
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Weil man jedes Semikolon hinter dem letzten Befehl vor einer
schließenden Geschweiften Klammer in Perl weglassen darf.
EDIT: Allerdings bekommst du eine Meldung wenn du die
öffnende weglässt.


Code: (dl )
{print "1"}

Würde also auch funktionieren.

MfG. Matze\n\n

<!--EDIT|Matze|1146748874-->
Mit freundlichen Grüßen: Matze
Relais
 2006-05-04 17:22
#65552 #65552
User since
2003-08-06
2246 Artikel
ModeratorIn
[Homepage] [default_avatar]
Es liegt an den Blöcken, nicht an den Klammern... auch eine Datei ist ein Block, daher kann man ein Modul anstelle mit

1;

auch einfach mit

1

abschließen... genaugenommen sogar mit beliebigem, das nicht als FALSE interpretiert wird.
Erst denken, dann posten --
27. Deutscher Perl- u. Raku -Workshop (Termin wird noch gesucht) 2025 in München.

Winter is Coming
betterworld
 2006-05-04 17:28
#65553 #65553
User since
2003-08-21
2614 Artikel
ModeratorIn

user image
Man darf Perl in dieser Hinsicht nicht mit C verwechseln. In C wird eine Anweisung mit einem Semikolon beendet, in Perl werden damit nur Anweisungen getrennt.
bloonix
 2006-05-04 17:36
#65554 #65554
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=Relais,04.05.2006, 15:22]Es liegt an den Blöcken, nicht an den Klammern... auch eine Datei ist ein Block, daher kann man ein Modul anstelle mit[/quote]
meinst du damit allgemein das ende eines namensraum?
könnte man das so formulieren?

anstonsten danke an alle...\n\n

<!--EDIT|opi|1146749851-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
Matze
 2006-05-04 17:42
#65555 #65555
User since
2005-08-29
222 Artikel
BenutzerIn
[Homepage] [default_avatar]
Ja ich glaube so könnte man es formolieren, mir fällt jedenfalls
kein Gegenbeispiel ein...

MfG. Matze
Mit freundlichen Grüßen: Matze
dominicn
 2006-05-04 18:27
#65556 #65556
User since
2003-08-08
327 Artikel
BenutzerIn
[default_avatar]
[quote=opi,04.05.2006, 15:36]meinst du damit allgemein das ende eines namensraum? [/quote]
Was ist denn das "Ende eines Namensraums"? Man kann in einer Datei auch mehrere Namensräume definieren, z.B.

Code: (dl )
1
2
3
4
5
6
7
8
9
package Mein::Modul::Nr1;

...

package Mein::Modul::Nr2;

...

package main;


Ich tippe mal, das vor der package-Anweisung zur Anweisungsabtrennung auch ein Semikolon verlangt wird.\n\n

<!--EDIT|dominicn|1146752987-->
bloonix
 2006-05-04 18:47
#65557 #65557
User since
2005-12-17
1615 Artikel
HausmeisterIn
[Homepage]
user image
[quote=dominicn,04.05.2006, 16:27]
Code: (dl )
package Mein::Modul::Nr1;
[/quote]
das ist ja auch nicht das ende eines namensraum, sondern
eine anweisung!

[quote=dominicn,04.05.2006, 16:27]Was ist denn das "Ende eines Namensraums"?[/quote]

zum Beispiel "}"

Code: (dl )
1
2
3
4
if (1)
{ # namensraum begin
print "Das Semikolon lasse ich jetzt mal frecherweise wech :-)"
} # namensraum ende
\n\n

<!--EDIT|opi|1146754229-->
What is a good module? That's hard to say.
What is good code? That's also hard to say.
One man's Thing of Beauty is another's man's Evil Hack.
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2006-05-04 17:09.