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

Aber 2 Fragen hab ich noch

Leser: 1


<< |< 1 2 >| >> 12 Einträge, 2 Seiten
perlniete
 2009-02-09 01:09
#118717 #118717
User since
2009-02-08
10 Artikel
BenutzerIn
[default_avatar]
Ich bin für eure Hilfe echt sehr sehr sehr dankbar... Jetz hätte ich noch 2 Fragen:



1) if ( $line =~ /^\s*/ ) {exit; } Diese Abfrage führt dazu dass das Programm auf Eingabe von <Return> abgebrochen wird, allerdings versteh ich nicht wieso, der sucht doch da auch nur nach Leerzeichen oder nicht?


Antwort war : Ja, aber er sucht auch nach Null whitespaces am Anfang des Strings, und die werden natürlich immer gefunden - die Regex matcht also jeden String.


Meine Frage :wenn er jeden String matchen würde wieso bricht er dann ab, das hieße doch das der Match den er findet eine True Aussage ist und somit dürfte er doch nicht abbrechen





2)Ich hab mich mit etwas für mich schwierigerem beschäftigt....folgende Aufgabe, und ich hoffe ich muss euch danach nicht mehr belästigen.

while ( $sequence =~ /$regexp/ig ) {
push ( @positions, pos($sequence) - lenght($&) +1);
}

Diese Zeilen sollen die Restriktionsschnittstelle, die im reulären Ausdruck $regexp steht, in der Sequenz $sequence und vermerken die Position glaub ich dann im Array @positions.

dass das i dafür steht das der Groß- und Kleinschreibung irgnoriert hab ich mitlerweile rausbekommen, aber woher kommt die Positionsangabe und wie werden die dann im Array vermerkt?

Ich hoff ihr seit noch ned all zu genervt!
LanX-
 2009-02-09 01:31
#118718 #118718
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
DRINGEND!!!!!!!

Ich find deinen Stil nervig

EDIT: Anzahl der Ausrufezeichen korrigiert!
perlniete
 2009-02-09 01:35
#118719 #118719
User since
2009-02-08
10 Artikel
BenutzerIn
[default_avatar]
LanX-+2009-02-09 00:31:04--
DRINGEND!!!!

Ich find deinen Stil nervig


entschuldigung das ich versuche freundlich zu fragen und erst kurz vor der Klausur Hilfe erbitte. Ich habe versucht es ohne HIlfe zu schaffen.
LanX-
 2009-02-09 01:48
#118720 #118720
User since
2008-07-15
1000 Artikel
BenutzerIn

user image
perlniete+2009-02-09 00:35:19--
entschuldigung das ich versuche freundlich zu fragen

Entschuldigung das ich dir Feedback gebe warum dir viele auf dein "freundliches" Gegängel nicht antworten werden!
perlniete
 2009-02-09 01:56
#118722 #118722
User since
2009-02-08
10 Artikel
BenutzerIn
[default_avatar]
LanX-+2009-02-09 00:48:55--
perlniete+2009-02-09 00:35:19--
entschuldigung das ich versuche freundlich zu fragen

Entschuldigung das ich dir Feedback gebe warum dir viele auf dein "freundliches" Gegängel nicht antworten werden!



Ok in meinen Augen ist das zwar keine "gegängel" aber ok wenn es dir sauer aufstößt musst du meine Fragen ja nicht beantworten, allerdings finde ich es faszinierend das du dich eher darüber "ärgerst" wie meine Fragen gestellt sind, anstatt einfach mal hinzunehmen das jemand keine Anhnung von Perl hat und versucht sich auf eine Prüfung vorzubereiten. Wenn du mir nicht helfen magst ist das durchaus in Ordnung, musst du nicht.
perlniete
 2009-02-09 03:06
#118724 #118724
User since
2009-02-08
10 Artikel
BenutzerIn
[default_avatar]
wäre trotzdem nett wenn mir jemand meine Ausgangsfrage beantworten könnte oder ist diese wirklich so schlimm gestellt?
Gast Gast
 2009-02-09 07:49
#118727 #118727
zu 1.)
Code (perl): (dl )
if ( $line =~ /^\s*/ ) {exit; }


"if" reagiert auf eine wahre Aussage. Wenn "$line=~/^\s*/" wahr ist wird das Programm beendet.
Aber der reguläre Ausdruck ist immer wahr, denn er fragt ob kein oder beliebig viele Leerzeichen am Anfang eines Strings vorkommen. Die Aussage ist immer wahr.

zu 2.)
Code (perl): (dl )
1
2
3
while ( $sequence =~ /$regexp/ig ) {
  push ( @positions, pos($sequence) - lenght($&) +1);
}

hier gibt es folgende Perl-Befehle:
a) while
b) =~
c) push
d) length
e) $&

zu a) wiederhole den Block solange die Aussage wahr ist
zu b) regulärer Ausdruck.
zu c) füge den String/Liste an das Array @positions an.
zu d) Ermittle die Länge eines Stringes.
zu e) der String, den der Reguläre Ausdruck matched.

"pos" ist ein Funktionsaufruf. die Funktion muss irgendwo definiert sein. Höchstwahrscheinlich wird ein Zahlenwert zurückgeliefert.
perlniete
 2009-02-09 08:00
#118728 #118728
User since
2009-02-08
10 Artikel
BenutzerIn
[default_avatar]
danke!

Das heißt also das pos($sequence) verantwortlich ist für den Zeiger der dann an das Array angehangen wird.
renee
 2009-02-09 09:23
#118730 #118730
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
pos ist eine Perlfunktion, die die Position im String nach der letzten m//g-Suche zurückliefert:

Code (perl): (dl )
1
2
3
my $var = 'Test';
$var =~ /es/g;
print pos( $var );


gibt 3 aus.

Siehe auch perldoc -f pos
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/
Crian
 2009-02-09 10:24
#118732 #118732
User since
2003-08-04
5871 Artikel
ModeratorIn
[Homepage]
user image
Bei so etwas wie

Code: (dl )
$sequence =~ /$regexp/ig


sollte man immer hellhörig werden. Entweder möchtest du alle speziellen Zeichen dadrin escapen

Code: (dl )
$sequence =~ /\Q$regexp/ig


oder du möchtest vorher irgendwie sicherstellen, dass du da keinen Schadcode (endloser regulärer Ausdruck etwa) ausführst.
s--Pevna-;s.([a-z]).chr((ord($1)-84)%26+97).gee; s^([A-Z])^chr((ord($1)-52)%26+65)^gee;print;

use strict; use warnings; Link zu meiner Perlseite
<< |< 1 2 >| >> 12 Einträge, 2 Seiten



View all threads created 2009-02-09 01:09.