/blog/perl


substr() in Perl
[121608 mal gelesen]
foreach in Perl
[112078 mal gelesen]
Arrays in Perl - Besonderheiten
[103934 mal gelesen]
open() - Dateien öffnen in Perl
[94638 mal gelesen]
split() in Perl - Zeichenketten teilen
[81679 mal gelesen]
chomp() in Perl
[81393 mal gelesen]
grep - Listen durchsuchen in Perl
[78733 mal gelesen]
push in Perl
[73955 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[57713 mal gelesen]
print in Perl
[47855 mal gelesen]


Arrays
Dateien
HTPC
Hashes
Leistungsoptimiert
PHP
Perl
RegEx
Schleifen
Script
Skalare
Sonstiges
System
Webserver
Zur Startseite


Thema Dateien


Mittwoch, 10.12.2008, 09:28:36 Uhr

truncate - Dateigröße verändern in Perl


Der Befehl truncate, der laut Dokumentation nicht auf allen Systemen vorhanden ist (bei mir jedoch unter Windows XP, Vista und Linux schon), kann dazu verwendet werden, eine Dateigröße nachträglich zu ändern.

Beispiel:

open (my $out,'>','test.txt');
print $out "123456789";
truncate($out,4);
close $out;


Weiterlesen...


Der Beitrag "truncate - Dateigröße verändern in Perl" wurde 10042 mal gelesen.

Kompletten Beitrag lesen Nach oben



Donnerstag, 3.1.2008, 08:13:26 Uhr

Fortgeschrittenes beschreiben von Dateien - einzelne Zeilen finden und ändern bzw. löschen


Nun, ich gebs ja zu, oft bin ich ja als Grundlagenforscher unterwegs.
Diesmal geht es darum, Dateien möglichst so zu beschreiben, so daß beim Einlesen bestimmte Zeilen besonders schnell wiedergefunden werden können.

Na gut, ein Beispiel
Ich habe 1000 fortlaufende Rechnungsnummern, dazu jeweils 1000 Brief-Texte, die ich in einer Datei speichern will.
Später will ich möglichst effektiv auf jeweils beliebige Rechnungsnummern plus Brief-Texte zugreifen.
Weiterlesen...


Der Beitrag "Fortgeschrittenes beschreiben von Dateien" wurde 5068 mal gelesen.

Kompletten Beitrag lesen Nach oben



Montag, 3.9.2007, 14:58:30 Uhr

Bestimmte Anzahl von Zeilen aus Datei einlesen - Probleme eines Lesers



Ich habe heute per Email von den Problemen eines Lesers erfahren, der zehn Zeilen aus einer Datei einlesen will, was aber irgentwie nicht hinhaut.

Er hat mir auch gleich seinen Code mitgeschickt, der folgendermaßen aussieht:

Weiterlesen...


Der Beitrag "Bestimmte Anzahl von Zeilen aus Datei einlesen - Probleme eines Lesers" wurde 6459 mal gelesen.

Kompletten Beitrag lesen Nach oben



Mittwoch, 22.8.2007, 10:37:45 Uhr

Alle Dateien eines Verzeichnisses löschen - Aber bitte mit Ausnahmen!



Wie so oft stand ich mal wieder vor dem Problem, bestimmte Ordner zu leeren, aber nicht komplett, da einige Dateien unberührt bleiben sollten.

Da ich schon öfters das Problem hatte, hab ich nun endlich mal ne vernünftige Subroutine geschrieben, die das Problem ein für allemal erledigt.

Weiterlesen...


Der Beitrag "Alle Dateien eines Verzeichnisses löschen - Aber bitte mit Ausnahmen!" wurde 7115 mal gelesen.

Kompletten Beitrag lesen Nach oben



Freitag, 1.6.2007, 11:55:37 Uhr

Bestimmte Anzahl von Zeilen aus Datei einlesen


Ein Problem beim Einlesen von Dateien kennen viele: Entweder man liest die Datei komplett in den Arbeitsspeicher ein und "verschleudert" so wertvolle Systemressourcen, oder man liest Zeilen nacheinander ein und hat dann das Problem, daß die jeweils nachfolgende zeile nicht da ist, wenn man sie braucht.

Ein Beispiel für das komplette Einlesen von Dateien

#Datei komplett einlesen
use strict;
open (my $IN,'<'.'1.txt');
my @array=(<$IN>);
close $IN;


Weiterlesen...


Der Beitrag "Bestimmte Anzahl von Zeilen aus Datei einlesen" wurde 14058 mal gelesen.

Kompletten Beitrag lesen Nach oben



Freitag, 11.5.2007, 12:18:57 Uhr

utime - Zeitstempel von Dateien oder Verzeichnissen ändern


utime setzt den Zeitstempel für Dateien oder Verzeichnissen neu. Zeitstempel bedeutet dabei: Die Zeit des letzten Lese- und Schreibzugriffes.

Syntax
$ergebnis=utime (Lesezeitneu,Schreibzeitneu,@Dateien);
oder
$ergebnis=utime (Lesezeitneu,Schreibzeitneu,$Datei);
Weiterlesen...


Der Beitrag "utime - Zeitstempel von Dateien oder Verzeichnissen ändern in Perl" wurde 9153 mal gelesen.

Kompletten Beitrag lesen Nach oben



Freitag, 27.4.2007, 11:29:17 Uhr

Speedtest File::Find


Wie ich hier ja schon berichtet habe, schien mit das Modul File::Find zu der Zeit etwas unflexibel.Grund dafür war die Tatsache, daß ich keine Dateiendungen übergeben konnte bzw. nicht festlegen konnte, wie viele Ebenen durchsucht werden sollen bzw. nur die aktuelle Ebene oder inklusive Unterebene.

Dies ist zwar natürlich Möglich, aber leider nur per Umweg.
Der Aufruf von File::Find erfolgt ja per
Weiterlesen...


Der Beitrag "Speedtest File::Find" wurde 7944 mal gelesen.

Kompletten Beitrag lesen Nach oben



Donnerstag, 26.4.2007, 11:27:33 Uhr

Identische Dateien finden - Der Holzweg



Zum ursprünglichen Beitrag
Hier also der Code, der mich nicht weiter brachte.

use Digest::MD5 qw(md5);
use strict;


my %files=();
my %dateien;
my @nulllength=();
my @dateisize=();
my @dateien=get_all_files('c:/htdocs/',1,'.shtml');

print "Es wurden ".@dateien." Dateien gefunden\n";

## Dateilänge holen und merken
foreach (@dateien){
open (my $IN,'<'.$_);
my $dateilaenge=(stat($_))[7];

binmode ($IN);
read ($IN,my $key,100);
close $IN;

my $size="$dateilaenge|$key";

# Ist Hash-Element der Dateigröße schon vorhanden???
# Wenn nicht, dann Array anlegen, erster Wert ist die Dateigröße
# Übrigens : Hier kann man die Verwendung eines Hashes mit (aus?) Arrays sehen
push (@{$dateien{$size}},"$size") if (!defined @{$dateien{$size}});
push (@{$dateien{$size}},$_);
}

# Ab hir steht in [filename,filename,filename]
# jede Datei, aufgetielt nach Dateigroessen

@dateien=();
foreach (keys %dateien){
my @dats=@{$dateien{$_}};
# wenigstens 2 Filenamen müssen da sein, also @dats >= 3, da erster Eintrag die Dateilaenge
next if @dats < 3;

&get_checksum(@dats);
}
%dateien=();

print qq~Dateien mit Nulllaenge:\n~;
print join("\n",@nulllength);

print qq~\n\nIdentische Dateien:\n~;

foreach (keys %files){
print "$files{$_}\n\n" if (split('\n',$files{$_}) >1);
}


exit;

###################
# Parameter
# Startdir ohne abschließendes /, aktuelles Verzeichnis = .
# Unterverzeichnisse durchsuchen? 1: ja, 0: nein
# Dateitypen in form .txt.htm.html , also direkt hintereinander, aber nur wenn nötig
# ansonsten wird alles gezeigt
#############################################
sub get_all_files{
my $startdir=shift;
my $include_subdirs=shift;
my $endings=shift;
my %endings=();
$endings=~ s/\s//g;
my @endings=split('\.',$endings);
shift @endings;

my $endings=0;
$startdir=~ s/\/$//;

if (@endings != 0){
$endings=1; # wenn Endungen angegeben
foreach (@endings){
$endings{$_}=1;
}
}
@endings=();

my @dateien=();
push (my @all_directories,$startdir);

foreach my $akdir(@all_directories){
local *in;
opendir (in,$akdir);
my @all=readdir(in);
closedir in;

foreach my $akdatei (@all){ next if ($akdatei eq '..' || $akdatei eq '.');
if (-d "$akdir/$akdatei") {
if ($include_subdirs == 1){
push (@all_directories,"$akdir/$akdatei");
next;
}
} else {
if ($endings==0){
push (@dateien,"$akdir/$akdatei");
} else {
my @endung=split('\.',$akdatei);
my $endung=$endung[-1];
if ($endings{$endung} == 1){
push (@dateien,"$akdir/$akdatei");
}
}
}
}
}
return @dateien;
}




######################
# generiert Checksumme einer Datei
#############################################
sub get_checksum{
my ($dateiname,$dateilaenge);
my %tempfiles=(); # temporäre Files
my $data='';

$dateilaenge=shift;
($dateilaenge,my $dummy)=split('\|',$dateilaenge);

return if $dateilaenge > 64000000;

if ($dateilaenge == 0){ # Wenn Dateilaenge = 0, dann gleich alles ins Array und zurück
push (@nulllength,@_);
return;
}

my $firsthundret='';

foreach $dateiname (@_){

open (my $IN,'<'.$dateiname);
binmode($IN);

my $checksum = Digest::MD5->new->addfile(*$IN)->digest;
close $IN;

$files{$checksum}.="$dateiname\n";
}
}





Der Beitrag "Identische Dateien finden - Der Holzweg" wurde 6494 mal gelesen.

Kompletten Beitrag lesen Nach oben



Mittwoch, 25.4.2007, 11:15:37 Uhr

Identische Dateien auf dem Computer finden mit Perl


Vor kurzem stand ich vor dem Problem, daß auf einem von mir betreuten Webserver der Speicherplatz aufgebraucht war.
Nach etwas herumsuchen stellte ich dann fest, daß es daran lag, daß viel Speicherplatz verschleudert wurde, weil viele identische Dateien mehrmals vorhanden waren.

Was lag also näher, als ein kleines Perl-Programm zu schreiben, das doppelte (identische) Dateien findet?

Weiterlesen...


Der Beitrag "Identische Dateien auf dem Computer finden mit Perl" wurde 8429 mal gelesen.

Kompletten Beitrag lesen Nach oben



Mittwoch, 18.4.2007, 00:01:12 Uhr

stat - Eigenschaften von Dateien ermitteln


Die Funktion stat() ermittelt diverse Eigenschaften einer Datei auf einmal.
Viele dieser Eigenchaften sind jedoch Unix-spezifisch. Manche dieser Eigenschaften lassen sich zwar auch auf anderen Plattformen erfragen, meist ist es jedoch einfacher, die Dateitestoperatoren für Dateien/Verzeichnisse zu verwenden.
Die Funktion stat läßt sich im Gegensatz zu lstat nicht auf Dateirepräsentationen, sondern nur auf "Originale" von Dateien anwenden.

Syntax
@Eigenschaften=stat(Datei);
Weiterlesen...


Der Beitrag "stat - Eigenschaften von Dateien ermitteln " wurde 14556 mal gelesen.

Kompletten Beitrag lesen Nach oben



B l o o g
1
2
3


SSD-Festplatte - Wassn das???
Die Transliteration - Nur ein Zeichen in einem Skalar ersetzen
Select - Case in Perl
Windows 7 XP Mode – Wo finde ich den XP-Modus unter Windows 7?
Mac-Adresse beim Apple Macintosh herausfinden
SGN-Funktion für Perl
truncate - Dateigröße verändern in Perl
Eigene IP herausfinden mit Perl
Epoche live in Datum umwandeln
Firefox 3 - Exe-Files downloaden


Von: Schorschel eastcoast
Kommentar:
Danke. Das hat mir weitergeholfen.
Zum Beitrag


Von: Jessica
Kommentar:
Kann man auch zwei Datein parallel einlesen?

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag


Von: Xtravaganz
Kommentar:
Für

Zum Beitrag


Von: Sammy
Kommentar:
wie lautet denn die syntax wenn ich eine perl datei in einer perl datei öffnen will. also hier steht ja "|datei: " muss ich da noch ein ".pl" anhängen oder nicht?
Zum Beitrag



Gesamtverzeichnis
Februar 2010
Dezember 2009
Oktober 2009
Januar 2009
Dezember 2008
November 2008
September 2008
August 2008
Juli 2008
Juni 2008
Mai 2008
April 2008
Januar 2008
Dezember 2007
November 2007
Oktober 2007
September 2007
August 2007
Juni 2007
Mai 2007
April 2007
März 2007
Februar 2007
Januar 2007
Dezember 2006


Mister Wong

RSS-Feed

Heute ist der
21.11.2017

Es ist
21:35:58 Uhr

Ihre IP:
54.158.214.111

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3538714


Webseiten vergleichen
Kalender mit Feiertagen - 2028
Links finden und testen
Menschliche Datumsangaben
IP zu Domain herausfinden
Time live in Datum umwandeln
Perl für Windows



Mo Di Mi Do Fr Sa So
12345
6789101112
13141516171819
20212223242526
27282930

Impressum