perl und Umlaute

perl und Umlaute

am 27.09.2006 14:38:42 von Marc Wiemers

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@euro

Hat jemand eine Idee

Marc

Re: perl und Umlaute

am 27.09.2006 14:40:51 von Frank Seitz

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@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

Re: perl und Umlaute

am 27.09.2006 14:56:11 von Mirco Wahab

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.

Re: perl und Umlaute

am 28.09.2006 01:53:52 von Slaven Rezic

Marc Wiemers 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@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 rezic de

Lost in your Tk widget tree? Try
http://user.cs.tu-berlin.de/~eserte/src/perl/Tk-WidgetDump/

Re: perl und Umlaute

am 28.09.2006 08:33:41 von Ferry Bolhar

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@adv.magwien.gv.at

Re: perl und Umlaute

am 28.09.2006 10:37:24 von Marc Wiemers

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
>

Re: perl und Umlaute

am 28.09.2006 16:29:13 von KWittrock

"Marc Wiemers" schrieb im Newsbeitrag
news:efg1k4$ur$1@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

Re: perl und Umlaute

am 28.09.2006 22:17:25 von Slaven Rezic

Marc Wiemers 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 rezic de

tkrevdiff - graphical display of diffs between revisions (RCS, CVS or SVN)
http://ptktools.sourceforge.net/#tkrevdiff

Re: perl und Umlaute

am 29.09.2006 10:25:21 von Marc Wiemers

K. Wittrock wrote:

>
> "Marc Wiemers" schrieb im Newsbeitrag
> news:efg1k4$ur$1@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