cgicorner.ch

Informationen rund um Perl/CGI

Sie sind hier: Home > Forum
Yet Another Bulletin Board

Willkommen, Gast. Bitte Einloggen oder Registrieren.
21. Oktober 2021 um 03:57

Übersicht Übersicht Hilfe Hilfe Suche Suche Mitglieder Mitglieder Einloggen Einloggen Registrieren Registrieren
cgicorner.ch « Skriptsprachen Mensch/Maschine Zeilenende »


   cgicorner.ch
   anderes
   anderes

   Skriptsprachen Mensch/Maschine Zeilenende
« Kein Thema | Nächstes Thema »
Seiten: 1  Antworten Antworten Bei Antworten benachrichtigen Bei Antworten benachrichtigen Drucken Drucken
   Autor  Thema: Skriptsprachen Mensch/Maschine Zeilenende  (Gelesen 1537 mal)
Karl_H.
YaBB Newbie
*



I love YaBB 1G - SP1!

   


Geschlecht: male
Beiträge: 12
Skriptsprachen Mensch/Maschine Zeilenende
« am: 04. April 2015 um 15:34 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo und Hoi zämä
 
Eine Frage, die mir schon lange auf der Zunge liegt:
Script-Auszug:
while (<INPUT>) {
$_ =~ s/[\r\n]+//g;   # \r und/oder \n löschen
 
Hier wird die Eingangsdatei zur weiteren Verarbeitung, vorerst in eine Zeile gelegt!
Gleiche Situation beim Suchen/Ersetzen in Texteditoren!  
- für Mensch schwierig, da alles nur noch in einer Zeile!!!!
- für Maschine eher Vorteil?????  
(weil Maschine mit Prozessor/Interpreter nach binären Kriterien abarbeitet und selber eine Einteilung vornimmt.)
!!!
Bei Textbasierten Skriptsprachen stösst man oft auf
ein Volumen von 50'000 bis 100'000 Zeilen.
Hat dies einen negativen Einfluss auf die Prozesse, die
im Hintergrund ablaufen, wenn für Ersetzungszwecke,
\r\n (die Zeilen-Enden) gelöscht werden????
Habe da beim Suchen + Ersetzen (notepad oder TextPad usw.) immer so meine Bedenken,
wenn ich \r\n wegputze und anschliessend nach meinen Kriterien neu aufbaue.
 
Hoffe, dass auch andere am Inhalt gefallen finden.
 
Gruss Karl
gespeichert
cgicorner.ch
YaBB Administrator
*****




Board Admin

   
Homepage E-Mail

Geschlecht: male
Beiträge: 790
Re: Skriptsprachen Mensch/Maschine Zeilenende
« Antworten #1 am: 04. April 2015 um 16:36 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Karl
 
Danke für deine Frage. Zu deinem (meinem Smiley) konkreten Beispiel:
 
while (<INPUT>) splittet schon nach \n, die nächste Zeile dient also primär dazu, allfällige \r zu eliminieren, das \n schreibe ich mehr aus Gewohnheit dazu. Zudem setze ich \n am Ende wieder an die Variable an.
 
Generell gilt:
Zeilenumbrüche sind etwas trickreich, da sie aus \n (UNIX), \r (Mac, alt) oder \r\n (DOS/Windows) bestehen können, je nach Herkunft der Datei und Betriebssystem, auf dem das Perl-Script läuft (schreibst du mit Perl für Windows ein \n in eine Datei, wird effektiv ein \r\n geschrieben, ausser du wechselst in den binmode).
 
Ebenfalls problematisch sind "willkürliche" Zeilenumbrüche in Dateien, wenn du nach Texten suchst (/Hallo Welt/ würde dann nicht zutreffen, wenn zwischen den zwei Worten ein Zeilenumbruch steckt).
 
Und last but not least: Wenn du mit Textdatenbanken wie deinem CSV-Beispiel arbeitest ist \n ein neuer Datensatz. Hier beachte ich in der Regel Quotes nicht (also \n innerhalb von zwei " gehörten zum selben Datensatz).
 
Deshalb: ich lösche in der Regel \r und \n aus Dateien, wenn ich mir nicht 100%ig sicher bin, welches Format sie aufweisen und ob sie sinnvoll gesetzt sind. Auf die Performance haben sie aber keinen spürbaren Einfluss, sie sind mir eher lästig, weil es nervt, das obere "Hallo Welt" Beispiel als /Hallo( |\r?\n)Welt/ oder so zu schreiben. Am Ende ist es aber Geschmacksache: behalte einfach immer die unterschiedlichen Zeilenumbrüche je nach Betriebssystem im Auge und bedenke, dass du bei einem Split nach \n (wie in der While-Schleife am Anfang) dann unter Linux mit Windows-Dateien noch an jeder Zeile ein \r hast und somit diverse Abfragen fehl schlagen, z.B. wäre $line eq "" dann false, weil die Zeile ja eben nicht leer ist, sondern ein \r enthält.
 
Ich hoffe, das hilft dir weiter. Schlussendlich musst du es so machen, wie es dir am besten passt...
 
Gruss
Jürg
gespeichert

cgicorner.ch - Informationen rund um Perl/CGI
Jürg Sommer
Karl_H.
YaBB Newbie
*



I love YaBB 1G - SP1!

   


Geschlecht: male
Beiträge: 12
Re: Skriptsprachen Mensch/Maschine Zeilenende
« Antworten #2 am: 04. April 2015 um 18:56 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo und sali zämä
Danke Jürg.
Die Betriebssystem-bedingte Syntax  
(Windows/Unix) für Zeilen-Enden,
sind mir geläufig.
Also zur Verarbeitung im Hintergrund (Prozessorebene),
keinen Einfluss!
Zitat:  
Auf die Performance haben sie aber keinen spürbaren Einfluss.
======================================================
Somit sind also meine Bedenken vom Tisch gefegt!
Ich kann also bedenkenlos einem 100'000 Zeiler (Textdatei)
die Zeilenenden wegfegen und daraus einen Ein-Zeiler machen.
PS:zur weiteren Verarbeitung (programmieren allgemein)
=======================================================
 
Dann nun eine nächste Knacknuss zum selben Thema: Performance, diesmal betrifft dies die Browser-Performance!
- position: absolute; maximal-Werte.
- Evaluierung als kartesiche Datenablage.
- Wo ist Ende Fahnenstange vertikal?
- Wo ist Ende Fahnenstange horizontal?
- Nachfolgende html-Datei läuft auf IE/FFOX/Opera.
 
Hiefür fakultativ für jedermann und eher spasseshalber!
Nachfolgende html-Datei.
 
<!DOCTYPE html>
<html>
<head>
<style>
h2 {position: absolute;left: 50px;top: 150px;}
#h3 {position: absolute;left:50px;top:3650px;}
#home {position: absolute;left:2000000.00px;top:175px;}
.para {position: absolute;left:100px;top:100px;}
</style>
</head>
<body>
<!-- home ist nicht etwa bei left=0.0px top=0.0px -->
<!-- home position: absolute;left: ist bei 2mio Pixel -->
<p id="home" style="color: green">
Wilcome at home:<br/>
I hope, the pixels you have not eaten,<br/>
when you arrived at the Stone no. 3650px. <br/>
<span style="color:red">
Welcome home!<br/>
But here it could be dangerous.<br/>
You live in the Stone nr. 2'000'000px.<br/>
from left!.<br/>
</span>
<span style="Color:blue">
Vielleicht besser Jürg Fragen!  
</span>
</p>
<h2>This heading (h2) is a absolute position</h2>
<h3 id="h3">yes you are by this (h3) 3500px from top<br/><a href="#home" style="color: green">Let's go home, that's it!</a></h3>
<p class="para">With absolute positioning, an element can be placed anywhere on a page. The heading below is placed 100px from the left of the page and 150px from the top of the page.</p>
<a href="#h3">href to h3</a>
</body>
</html>  
 
gespeichert
cgicorner.ch
YaBB Administrator
*****




Board Admin

   
Homepage E-Mail

Geschlecht: male
Beiträge: 790
Re: Skriptsprachen Mensch/Maschine Zeilenende
« Antworten #3 am: 04. April 2015 um 19:27 »
Zitieren Zitieren Bearbeiten Bearbeiten

Hallo Karl
 
Ja, 100'000 Dateien auf eine Zeile zu bringen müsste problemlos gehen. Perl hat mit grossen Dateien generell keine grösseren Probleme bezüglich Performance, Limite stellt einzig der RAM-Verbrauch (wird natürlich alles in den RAM geladen). Gerade bei Hostern wird dieser pro Prozess teilweise an einer spürbaren Grenze limitiert (hab schon 100MB angetroffen).
 
Wenn du den RAM hast, ist das kein Problem. Wenn es aber Sinn macht, die Datei zeilenweise zu verarbeiten, weil jede Zeile in sich einzeln betrachtet werden kann würde ich Zeilenumbrüche einfügen und in einer While-Schleife durch die Datei gehen. Benötigst du sowieso die komplette Datei von Anfang bis Ende in einer Variable spielt es aber keine Rolle, ob du Zeilenumbrüche in der Datei hast oder nicht.
 
Bezüglich deiner anderen Frage kann ich dir keine Limiten angeben, gibt wohl offiziell auch keine bzw. wird von Browser zu Browser unterschiedlich generiert. Generell würde ich es aber nicht übertreiben und ggf. mittels AJAX-Request weitere Teile nachladen, gerade Mobile-Geräte mit limitiertem Speicher dürften sonst schon ziemlich schnell mal an Grenzen kommen. Wichtiger als die absoluten Pixel-Ausmasse sind sicher Verschachtelungen und relative Positionierungen, da hierfür immer wieder Teile der Seite bereits gerendert sein müssen. Kannst du aber schlecht mit allen Browsern im Voraus testen und reproduzierbare Abstürze verzeihen dir die Nutzer wohl nicht. Also weniger ist mehr...
 
Gruss
Jürg
gespeichert

cgicorner.ch - Informationen rund um Perl/CGI
Jürg Sommer
Seiten: 1  Antworten Antworten Bei Antworten benachrichtigen Bei Antworten benachrichtigen Drucken Drucken

« Kein Thema | Nächstes Thema »

cgicorner.ch » Powered by YaBB 1 Gold - SP3!
YaBB © 2000-2004. All Rights Reserved.