Du befindest Dich im Archiv vom ABAKUS Online Marketing Forum. Hier kannst Du Dich für das Forum mit den aktuellen Beiträgen registrieren.

Perl: Zeilenumbruch erkennen.

Ajax, Hijax, Microformats, RDF, Markup, HTML, PHP, CSS, MySQL, htaccess, robots.txt, CGI, Java, Javascript usw.
Neues Thema Antworten
Nullpointer
PostRank 10
PostRank 10
Beiträge: 4790
Registriert: 22.04.2005, 19:14
Wohnort: West Berlin

Beitrag von Nullpointer » 16.09.2005, 10:53

Ich schkeife zeilenweise durch eine Datei.
Dabei wird jede Zeile in ein Array gesplittet.
Nun gibt es den Fall, dass der letzte Eintrag des Arrays einen String plus Umbruch oder nur einen Umbruch enthält.

Diesen Fall möchte ich in einer if-Abfrage unterscheiden.
Ich habe es wahlweise mit

Code: Alles auswählen

if ($ding eq \n)
und

Code: Alles auswählen

if ($ding eq \r)
probiert. Dabei gab es zwar keine Fehlermeldung, aber die Zeilen mit nur dem Umbruch wurden auch nicht erkannt.
I know it's simple but it's perl ;-)

Anzeige von ABAKUS

von Anzeige von ABAKUS »

SEO Consulting bei ABAKUS Internet Marketing
Erfahrung seit 2002
  • persönliche Betreuung
  • individuelle Beratung
  • kompetente Umsetzung

Jetzt anfragen: 0511 / 300325-0.


LinkPop
PostRank 9
PostRank 9
Beiträge: 1677
Registriert: 02.05.2004, 13:52

Beitrag von LinkPop » 16.09.2005, 12:06

if ($ding eq "\n")
[url=httpss://www.rankseek.com/][img]httpss://www.rankseek.com/img/rankseek-xs-2.png[/img][/url]
  • Täglicher Ranking-Check Deiner Top-Keywords mit Traffic-Index für Mobile und Desktop, Serp-View, Reporting, Ranking-Charts, Konkurrenzanalyse, Ranking-Verteilung, Keyword-Suggest und mehr für nur 11,90 € / Monat. Jetzt alle rankseek-Tools 30 Tage kostenlos testen » [url=httpss://www.rankseek.com/features.php]Features[/url]

csx
PostRank 5
PostRank 5
Beiträge: 305
Registriert: 09.02.2005, 18:19

Beitrag von csx » 16.09.2005, 14:06

if $ding=~/^\r?\n/

Dann hast du Windows-Zeilenumbrüche auch mit drin... oder

if $ding=~/^(\r\n|\r|\n)/

um Mac auch mitzunehmen.


Gruß
csx

Kristian
PostRank 9
PostRank 9
Beiträge: 1484
Registriert: 20.07.2005, 16:30

Beitrag von Kristian » 16.09.2005, 19:25

Hallo @gsx
if $ding=~/^\r?\n/
Dann hast du Windows-Zeilenumbrüche auch mit drin... oder
Du solltest der Vollständigkeit halber erwähnen, dass das ^ in einer regex den Zeilenanfang meint.
if $ding=~/^(\r\n|\r|\n)/
um Mac auch mitzunehmen.
Hast du nen Mac? Mir wurde gesagt, dass der Mac Linebreaks intern als \r sieht, allerdings seien beim Mac \r und \n vertauscht (aus Nicht-Mac-Sicht) somit müßte die obige regex den Mac schon mitnehmen, da es für uns \n ist.

Gruß Kristian
Seo-Check Biete Links zu Schmuck und Hochzeit sowie Artikelplätze für Firmen allgemein.

Kristian
PostRank 9
PostRank 9
Beiträge: 1484
Registriert: 20.07.2005, 16:30

Beitrag von Kristian » 16.09.2005, 19:33

Hallo @Nullpointer
probiert. Dabei gab es zwar keine Fehlermeldung, aber die Zeilen mit nur dem Umbruch wurden auch nicht erkannt.
kristian@under-the-sky:~> perl -we 'my $line = "\n"; if($line eq \n){ print "jo\n"}'
Unquoted string "n" may clash with future reserved word at -e line 1.

-w bzw. use warnings (ab 5.6) schaltet dir die Hinweise an, die dich vor solchem Unheil bewahren.

kristian@under-the-sky:~> perl -we 'my $line = "\n"; if($line eq "\n"){ print "jo & Gruß\n Kristian\n"}'
jo & Gruß
Kristian
Seo-Check Biete Links zu Schmuck und Hochzeit sowie Artikelplätze für Firmen allgemein.

csx
PostRank 5
PostRank 5
Beiträge: 305
Registriert: 09.02.2005, 18:19

Beitrag von csx » 16.09.2005, 21:55

IIRC ist es doch

Unixe -> \n
WinDos -> \r\n
Mac -> \r

https://en.wikipedia.org/wiki/Newline#Representations

Mac < X benutzt \r

Kristian
PostRank 9
PostRank 9
Beiträge: 1484
Registriert: 20.07.2005, 16:30

Beitrag von Kristian » 17.09.2005, 11:13

Hallo
@csx Ja ich habe auch nicht wirklich etwas anderes behauptet. Der Mac benutzt "\r".
Aber das "\r" des Mac ist das "\n" auf Unix.
Siehe dazu "perldoc perlport".
Hier wird meine Aussage unter "Newlines" bestätigt.

| Unix | DOS | Mac |
---------------------------
\n | LF | LF | CR |
\r | CR | CR | LF |
\n * | LF | CRLF | CR |
\r * | CR | CR | LF |
---------------------------
* text-mode STDIO

Somit ist auf Nixen und Dosen die einfache Regex absolut ok..

Gruß Kristian
Seo-Check Biete Links zu Schmuck und Hochzeit sowie Artikelplätze für Firmen allgemein.

Nullpointer
PostRank 10
PostRank 10
Beiträge: 4790
Registriert: 22.04.2005, 19:14
Wohnort: West Berlin

Beitrag von Nullpointer » 19.09.2005, 08:20

1000 Dank.

So lange die Kanzlerfrage nicht geklärt ist, vielleicht noch was zur Überbrückung ;-)

Code: Alles auswählen

$ref =~ tr/\&/\&amp\;/;
möchte ich die & umwandeln. wie bekomme ich hin, dass er nicht nur das erste zeichen aus dem ersetzungsstring nimmt, sondern den ganzen string?

Kristian
PostRank 9
PostRank 9
Beiträge: 1484
Registriert: 20.07.2005, 16:30

Beitrag von Kristian » 19.09.2005, 14:19

Hallo
$ref =~ s/\&/&/g;
oder besser "use HTML::Entities;" => perldoc HTML::Entities
Gruß Kristian
Seo-Check Biete Links zu Schmuck und Hochzeit sowie Artikelplätze für Firmen allgemein.

Antworten
  • Vergleichbare Themen
    Antworten
    Zugriffe
    Letzter Beitrag