Hinweis: Das Forum wird geschlossen! Neue Registrierungen sind nicht mehr möglich!

 Zurück zu Pro-Linux   Foren-Übersicht   FAQ     Suchen    Mitgliederliste
in Perl byteweises lesen in einer Geraetedatei

 
Neuen Beitrag schreiben   Auf Beitrag antworten    Pro-Linux Foren-Übersicht -> Programmieren - Allgemein
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
killerhippy



Anmeldungsdatum: 19.05.2000
Beiträge: 529

BeitragVerfasst am: 01. Apr 2001 12:11   Titel: in Perl byteweises lesen in einer Geraetedatei

Hi,

gerne moechte ich perlish programmieren, leider kenne ich aber nur ein shell-script, um den CD-Namen einer CDROM auszulesen (gefunden im CDR-Writing-Howto).

Wie uebersetzt man

dd if=$RD bs=1 skip=$OFFSET count=$LENGTH

nach perl?

Dabei geht es, wie man es von dd her kennt, um byte-weises setzen des Pointers und auslesen einer bestimmten Anzahl von Bytes.

Wer weiss mir da einen Tip zu geben?

Der vollstaendigkeit halber und weils so kurz ist, hier das ganze script:

---schnipp---
#! /bin/bash

RD=/dev/cdrom
for i in 32776,32 32808,32 32958,128
do
old_IFS="$IFS"
IFS=","
set -- $i
IFS="$old_IFS"
OFFSET=$1
LENGTH=$2
echo "*`dd if=$RD bs=1 skip=$OFFSET count=$LENGTH 2> /dev/null`#"
done
---schnapp---

...ist ein bisschen eingekuerzt, da mich nur der Label interessiert.

thanx
_________________
Es gibt keine dumme Fragen!

Killerhippy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Jochen
Gast





BeitragVerfasst am: 01. Apr 2001 16:57   Titel: Re: in Perl byteweises lesen in einer Geraetedatei

Hi Sascha,

bin zwar selbst nur einäugig in Sachen perl, aber eine schnelle Recherche mittels "man perlfunc" gräbt ein paar Funktionen aus, die es tun sollten:

open, read, seek, close

Fragmentarisch in der Form:
code:


open CD "/dev/cdrom" ;
seek CD, 32776, 0; # Die letzte 0 steht für absolute Position
read CD, $label, 32;
close CD;


Je nachdem, wie die Daten dann vorliegen, kannst Du sie mittels unpack noch in handhabbare Arrays oder so zerlegen.

Ich hoffe, dass das weiterhilft!
 

killerhippy



Anmeldungsdatum: 19.05.2000
Beiträge: 529

BeitragVerfasst am: 01. Apr 2001 17:29   Titel: Re: in Perl byteweises lesen in einer Geraetedatei

Hi Jochen,

in der Tat, so geht's:

---schnipp---
#!/usr/local/bin/perl -w

sub getit{
seek(FH, $addr,0) || die "Fehler bei seek: $!\ n";
read(FH,$addr,$lenge);
print "$addr\ n";
}

open(FH,"</dev/cdrom") || die "cant open cdrom : $!\ n";

$addr=32808;
$lenge=32;
getit;

$addr=32958;
$lenge=128;
getit;

close(FH);
---schnapp--- Note: erase space between \ and n !

Thanxalot
_________________
Es gibt keine dumme Fragen!

Killerhippy
 
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden Website dieses Benutzers besuchen

Beiträge vom vorherigen Thema anzeigen:   
     Pro-Linux Foren-Übersicht -> Programmieren - Allgemein Alle Zeiten sind GMT + 1 Stunde
Seite 1 von 1

 
Gehen Sie zu:  

Powered by phpBB © phpBB Group
pro_linux Theme © 2004 by Mandaxy