perl und Umlaute

Hallo,

ich versuche verzweifelt auf einem Linixsystem perl beizubringen Files
umzubenennen die auch Umlaute haben können.
also so:

system ("mv '$i' '$ir'");

$i der alte Name und
$ir der neue mit Umlauten
ach lang sieht so aus:

LANG=de_DE [at] euro

Hat jemand eine Idee

Marc
Marc Wiemers [ Mi, 27 September 2006 14:38 ] [ ID #1481144 ]

Re: perl und Umlaute

Marc Wiemers wrote:

> ich versuche verzweifelt auf einem Linixsystem perl beizubringen Files
> umzubenennen die auch Umlaute haben können.
> also so:
>
> system ("mv '$i' '$ir'");
>
> $i der alte Name und
> $ir der neue mit Umlauten
> ach lang sieht so aus:
>
> LANG=de_DE [at] euro
>
> Hat jemand eine Idee

Vielleicht solltest Du noch dazu sagen, worin das Problem genau besteht.

Grüße
Frank
--
Dipl.-Inform. Frank Seitz; http://www.fseitz.de/
Anwendungen für Ihr Internet und Intranet
Tel: 04103/180301; Fax: -02; Industriestr. 31, 22880 Wedel
Frank Seitz [ Mi, 27 September 2006 14:40 ] [ ID #1481145 ]

Re: perl und Umlaute

Thus spoke Marc Wiemers (on 2006-09-27 14:38):

> ich versuche verzweifelt auf einem Linixsystem perl beizubringen Files
> umzubenennen die auch Umlaute haben können.
> also so:
>
> system ("mv '$i' '$ir'");

Beispiel? (Konket)

> Hat jemand eine Idee

Was spricht gegen

...
$status = rename($old, $new);
...


Viele Grüße

M.
Mirco Wahab [ Mi, 27 September 2006 14:56 ] [ ID #1481147 ]

Re: perl und Umlaute

Marc Wiemers <jupiter_42 [at] gmx.de> writes:

> Hallo,
>
> ich versuche verzweifelt auf einem Linixsystem perl beizubringen Files
> umzubenennen die auch Umlaute haben können.
> also so:
>
> system ("mv '$i' '$ir'");
>
> $i der alte Name und
> $ir der neue mit Umlauten
> ach lang sieht so aus:
>
> LANG=de_DE [at] euro
>
> Hat jemand eine Idee

Vielleicht ist es ein Encoding-Problem? Du musst auf jeden Fall die
Octets in $i im gleichen Encoding wie die Bytes deines Dateinamens auf
der Festplatte haben.

--
Slaven Rezic - slaven <at> rezic <dot> de

Lost in your Tk widget tree? Try
http://user.cs.tu-berlin.de/~eserte/src/perl/Tk-WidgetDump/
Slaven Rezic [ Do, 28 September 2006 01:53 ] [ ID #1482455 ]

Re: perl und Umlaute

Marc Wiemers:

> system ("mv '$i' '$ir'");

Warum verwendest du nicht den Befehl, den Perl
hierfür zur Verfügung stellt, also hier):

rename($i,$ir) or die "Rename fehlgeschlagen: $!\n";

"system" erzeugt eine Shell, in deren Context dann
der angegebene Befehl ausgeführt wird. Dass kann
zu Problemen führen, wenn in der Befehlszeile
Sonderzeichen (zu denen auch Umlaute zählen)
vorkommen.

LG, Ferry

--
Ing Ferry Bolhar
Magistrat der Stadt Wien - MA 14
A-1010 Wien
E-Mail: bol [at] adv.magwien.gv.at
Ferry Bolhar [ Do, 28 September 2006 08:33 ] [ ID #1482460 ]

Re: perl und Umlaute

Hallo Ferry,

vielen Dank für den Tipp. Leider hat der rename Befehl das gleiche Ergebnis.
Das $ir wird über perTK eingelesen vielleicht ist das das Problem.
Ich weiß nicht weiter.

Marc

Ferry Bolhar wrote:

> Marc Wiemers:
>
>> system ("mv '$i' '$ir'");
>
> Warum verwendest du nicht den Befehl, den Perl
> hierfür zur Verfügung stellt, also hier):
>
> rename($i,$ir) or die "Rename fehlgeschlagen: $!\n";
>
> "system" erzeugt eine Shell, in deren Context dann
> der angegebene Befehl ausgeführt wird. Dass kann
> zu Problemen führen, wenn in der Befehlszeile
> Sonderzeichen (zu denen auch Umlaute zählen)
> vorkommen.
>
> LG, Ferry
>
Marc Wiemers [ Do, 28 September 2006 10:37 ] [ ID #1482466 ]

Re: perl und Umlaute

"Marc Wiemers" <jupiter_42 [at] gmx.de> schrieb im Newsbeitrag
news:efg1k4$ur$1 [at] saphir.steine.home...
> Hallo Ferry,
>
> vielen Dank für den Tipp. Leider hat der rename Befehl das gleiche
> Ergebnis.
> Das $ir wird über perTK eingelesen vielleicht ist das das Problem.
> Ich weiß nicht weiter.
>
> Marc
>
> Ferry Bolhar wrote:
>
>> Marc Wiemers:
>>
>>> system ("mv '$i' '$ir'");
>>
>> Warum verwendest du nicht den Befehl, den Perl
>> hierfür zur Verfügung stellt, also hier):
>>
>> rename($i,$ir) or die "Rename fehlgeschlagen: $!\n";
>>
>> "system" erzeugt eine Shell, in deren Context dann
>> der angegebene Befehl ausgeführt wird. Dass kann
>> zu Problemen führen, wenn in der Befehlszeile
>> Sonderzeichen (zu denen auch Umlaute zählen)
>> vorkommen.
>>
>> LG, Ferry
>>
>
Hallo Marc,

> Das $ir wird über perTK eingelesen vielleicht ist das das Problem.

Genau. Perl/Tk wandelt alle Strings nach utf8. Wie Slaven schon schrieb,
musst du umkodieren. Versuch's mal mit
use Encode;
$ir = encode('iso-8859-1', $ir);

BTW, stelle doch bitte deine Antworten nicht nach oben.

Gruß

Klaus
KWittrock [ Do, 28 September 2006 16:29 ] [ ID #1482483 ]

Re: perl und Umlaute

Marc Wiemers <jupiter_42 [at] gmx.de> writes:

> Hallo Ferry,
>
> vielen Dank für den Tipp. Leider hat der rename Befehl das gleiche Ergebnis.
> Das $ir wird über perTK eingelesen vielleicht ist das das Problem.
> Ich weiß nicht weiter.
>

Hast du meinen Tipp weiter verfolgt? Weiterer Hinweis: alle Strings,
die aus Perl/Tk kommen, habe das utf-8-Bit gesetzt. Du musst also per
Encode.pm nach iso-8859-1 oder ...-15 kodieren, um das gewünschte
Ergebnis zu erhalten.

> Marc
>
> Ferry Bolhar wrote:
>
> > Marc Wiemers:
> >
> >> system ("mv '$i' '$ir'");
> >
> > Warum verwendest du nicht den Befehl, den Perl
> > hierfür zur Verfügung stellt, also hier):
> >
> > rename($i,$ir) or die "Rename fehlgeschlagen: $!\n";
> >
> > "system" erzeugt eine Shell, in deren Context dann
> > der angegebene Befehl ausgeführt wird. Dass kann
> > zu Problemen führen, wenn in der Befehlszeile
> > Sonderzeichen (zu denen auch Umlaute zählen)
> > vorkommen.
> >
> > LG, Ferry
> >
>

--
Slaven Rezic - slaven <at> rezic <dot> de

tkrevdiff - graphical display of diffs between revisions (RCS, CVS or SVN)
http://ptktools.sourceforge.net/#tkrevdiff
Slaven Rezic [ Do, 28 September 2006 22:17 ] [ ID #1482486 ]

Re: perl und Umlaute

K. Wittrock wrote:

>
> "Marc Wiemers" <jupiter_42 [at] gmx.de> schrieb im Newsbeitrag
> news:efg1k4$ur$1 [at] saphir.steine.home...
>> Hallo Ferry,
>>
>> vielen Dank für den Tipp. Leider hat der rename Befehl das gleiche
>> Ergebnis.
>> Das $ir wird über perTK eingelesen vielleicht ist das das Problem.
>> Ich weiß nicht weiter.
>>
>> Marc
>>
>> Ferry Bolhar wrote:
>>
>>> Marc Wiemers:
>>>
>>>> system ("mv '$i' '$ir'");
>>>
>>> Warum verwendest du nicht den Befehl, den Perl
>>> hierfür zur Verfügung stellt, also hier):
>>>
>>> rename($i,$ir) or die "Rename fehlgeschlagen: $!\n";
>>>
>>> "system" erzeugt eine Shell, in deren Context dann
>>> der angegebene Befehl ausgeführt wird. Dass kann
>>> zu Problemen führen, wenn in der Befehlszeile
>>> Sonderzeichen (zu denen auch Umlaute zählen)
>>> vorkommen.
>>>
>>> LG, Ferry
>>>
>>
> Hallo Marc,
>
>> Das $ir wird über perTK eingelesen vielleicht ist das das Problem.
>
> Genau. Perl/Tk wandelt alle Strings nach utf8. Wie Slaven schon schrieb,
> musst du umkodieren. Versuch's mal mit
> use Encode;
> $ir = encode('iso-8859-1', $ir);
>
> BTW, stelle doch bitte deine Antworten nicht nach oben.
>
> Gruß
>
> Klaus

Hallo Klaus,

danke damit geht es!

Marc
Marc Wiemers [ Fr, 29 September 2006 10:25 ] [ ID #1483783 ]
Perl » de.comp.lang.perl.misc » perl und Umlaute

Vorheriges Thema: Durchsuchen von Verzeichnissen kein Recht
Nächstes Thema: zwei mal pattern-match