Schrift
[thread]10762[/thread]

CD in String umwandeln

Leser: 1


<< >> 9 Einträge, 1 Seite
Gast Gast
 2007-11-09 18:05
#102139 #102139
Also ich möchte gerne alle Daten auf einer CD in EINEN String umwandeln... nur hab ich keinen Plan wie ich das machen soll... wäre euch sehr dankbar wenn ihr mir einen kleinen Denkanstoss geben könnten!

Mfg
Ronnie
 2007-11-09 19:40
#102148 #102148
User since
2003-08-14
2022 Artikel
BenutzerIn
[default_avatar]
per tar und uuencode oder auch als MIME(Base64 codiert?!
renee
 2007-11-09 19:41
#102149 #102149
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
Einen globalen String machen,dann die Dateien auf der CD nacheinander öffnen und an den String hängen...

Code (perl): (dl )
1
2
3
4
5
my $string = '';

for my $file ( @files_on_cd ){
    $string .= do{ local ( @ARGV,$/ ) = $file; <> };
}


Wahrscheinlich musst Du noch ein binmode einbauen...

Oder habe ich an der Aufgabe etwas falsch verstanden?
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/
Gast Gast
 2007-11-09 22:49
#102160 #102160
Erst einmal danke, ja ok... was ich jetzt nicht so ganz verstehe: Wie verweise ich da auf die CD? weil da steht zwar "@files on cd" aber muss ich da den Pfad oder so angeben!?

Mfg
topeg
 2007-11-10 10:32
#102164 #102164
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;
use File::Find;

my $path_to_cd='/media/cd0/';

my $file_data_from_cd;

find(sub{ $file_data_from_cd.=do{ local ( @ARGV,$/ ) = $File::Find::name; <> }; },$path_to_cd);

## Tuh was mit den Daten in $file_data_from_cd ...


So könnte man es machen...
Gast Gast
 2007-11-10 11:08
#102166 #102166
ahhh... danke! werds mal probieren
Gast Gast
 2007-11-10 15:33
#102175 #102175
Ich krieg da leider ne fehlermeldung:

"Can't do inplace edit: E:/ is not a regular file at hello.cgi line 10"

Also ich weiß schon was das Problem is... nur wie behebe ich das?

Mein Code:

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#!/usr/bin/perl
use strict;
use warnings;
use File::Find;

my $string = '';
my $cdpath='E:/';
my $cdfiles;

find (sub{ $cdfiles.=do{ local ( @ARGV,$/ ) = $File::Find::name; <> }; },$cdpath);

for my $file2 ( $cdfiles )
{
$string .= do{ local ( @ARGV,$/ ) = $file2; <> };
print $file2;
}
RPerl
 2007-11-10 18:08
#102183 #102183
User since
2006-11-26
384 Artikel
BenutzerIn

user image
Hallo,

das was du da hast ist so nicht richtig.
Du brauchst ausschlieslich das:

Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;
use File::Find;

my $path_to_cd='/media/cd0/';

my $file_data_from_cd;

find(sub{ $file_data_from_cd.=do{ local ( @ARGV,$/ ) = $File::Find::name; <> }; },$path_to_cd);

## Tuh was mit den Daten in $file_data_from_cd ...


.. in eine Datei namens "xyz.pl" (ohne die Gaensefuesschen) kopieren und dann ausfuehren.
Dein code oben ist da doppelt gemobbelt.

Gruss,

rperl
topeg
 2007-11-10 20:55
#102187 #102187
User since
2006-07-10
2611 Artikel
BenutzerIn

user image
in meinem Beispiel fehlt die Abfrage, ob es eine Datei ist. (siehe "-f $File::Find::name")
Also so:
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
#!/usr/bin/perl

use strict;
use warnings;
use File::Find;

my $path_to_cd='/medie/cd0/';

my $file_data_from_cd;

find(sub{ $file_data_from_cd.=do{ local ( @ARGV,$/ ) = $File::Find::name; <> } if(-f $File::Find::name); },$path_to_cd);

## Tuh was mit den Daten in $file_data_from_cd ...
<< >> 9 Einträge, 1 Seite



View all threads created 2007-11-09 18:05.