/blog/perl


substr() in Perl
[123499 mal gelesen]
foreach in Perl
[113463 mal gelesen]
Arrays in Perl - Besonderheiten
[105802 mal gelesen]
open() - Dateien öffnen in Perl
[95726 mal gelesen]
split() in Perl - Zeichenketten teilen
[84207 mal gelesen]
chomp() in Perl
[82399 mal gelesen]
grep - Listen durchsuchen in Perl
[79675 mal gelesen]
push in Perl
[75572 mal gelesen]
sleep in Perl - Das aktuelle Script warten lassen
[58996 mal gelesen]
print in Perl
[48515 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 10279 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 5170 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 6640 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 7281 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 14194 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 9288 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 8139 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 6626 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 8560 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 14920 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
20.2.2018

Es ist
4:24:21 Uhr

Ihre IP:
50.19.34.255

Blog-Einträge: 186

Die letzten 24 Stunden im Überblick


Gelesene Beiträge insgesamt:
3594674


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
1234
567891011
12131415161718
19202122232425
262728

Impressum