perl filter auf win32

Hallo,

diese einfach Filter:
---------tohtml.pl-------------
while (<>) {
$n++;
s/\n/<br>\n/g;
print;
}
-------------------------------
selbst so ein Nichtsnutz wie:
-------------------------------
while(<>) {
print;
}
-------------------------------
müsste doch bei folgendem Aufruf:

C:>dir | tohtml.pl

etwas ausgeben! Auf meinem Win32 System
erhalte ich nur eine Leerzeile sonst nichts.
WARUM?


http://www.unix.org.ua/orelly/perl/cookbook/ch07_08.htm#ch07 -pgfId-1000001149
Gerhard Wolf [ Fr, 10 November 2006 12:04 ] [ ID #1531587 ]

Re: perl filter auf win32

Gerhard Wolf schrieb:
> -------------------------------
> müsste doch bei folgendem Aufruf:
>
> C:>dir | tohtml.pl
>
> etwas ausgeben! Auf meinem Win32 System
> erhalte ich nur eine Leerzeile sonst nichts.
> WARUM?

Versuch mal:


C:\> tohtml.pl | dir


Möglicherweise brauchst Du auch einen korrekten 'shebang':

#!d:/perl/bin/perl.exe

while(<>) {
print;
}


Je nach dem ...


Viele Grüße
Mirco Wahab [ Fr, 10 November 2006 12:14 ] [ ID #1531588 ]

Re: perl filter auf win32

Hallo,

Gerhard Wolf wrote:

> Hallo,
>
> C:>dir | tohtml.pl
>
> etwas ausgeben! Auf meinem Win32 System
> erhalte ich nur eine Leerzeile sonst nichts.
> WARUM?
>

Weil man einem Script unter Windows nichts über eine pipe übergeben kann?

Probier mal das:

tohtml.bat:
[at] rem = '--*-Perl-*--
[at] echo off
if "%OS%" == "Windows_NT" goto WinNT
perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
goto endofperl
:WinNT
perl -x -S %0 %*
if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
if %errorlevel% == 9009 echo You do not have Perl in your PATH.
if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
goto endofperl
[at] rem ';
#!d:/perl/bin/perl -w
#line 15

while(<>) {
print;
}
__END__
:endofperl


Auch das funkt:
dir |perl tohtml.pl

Grüße
Reinhard
Reinhard Pagitsch [ Fr, 10 November 2006 12:24 ] [ ID #1531589 ]

Re: perl filter auf win32

Hallo Mirco,

Mirco Wahab wrote:
> Gerhard Wolf schrieb:
>> -------------------------------
>> müsste doch bei folgendem Aufruf:
>>
>> C:>dir | tohtml.pl
>>
>> etwas ausgeben! Auf meinem Win32 System
>> erhalte ich nur eine Leerzeile sonst nichts.
>> WARUM?
>
> Versuch mal:
>
>
> C:\> tohtml.pl | dir
>

nein, gibt nur das von dir aus und wartet dann ewig.

>
> Möglicherweise brauchst Du auch einen korrekten 'shebang':
>
> #!d:/perl/bin/perl.exe
>
> while(<>) {
> print;
> }
>
>

Auch das funzt nicht, es wird nur eine Leerzeile ausgegeben.

Grüße
Reinhard
Reinhard Pagitsch [ Fr, 10 November 2006 12:30 ] [ ID #1531590 ]

Re: perl filter auf win32

Reinhard Pagitsch schrieb:
> Hallo Mirco,
>> Möglicherweise brauchst Du auch einen korrekten 'shebang':
>>
>> #!d:/perl/bin/perl.exe
>>
>> while(<>) {
>> print;
>> }
>>
>>
>
> Auch das funzt nicht, es wird nur eine Leerzeile ausgegeben.

Sorry, das war ein Schnellschuss, das sollte
noch gar nicht abgesendet werden ...


Inzwischen wurde ja die korrekte Lösung
mit
C:\> kommando | perl script.pl

geposted

Viele Grüße

M.
Mirco Wahab [ Fr, 10 November 2006 12:42 ] [ ID #1531592 ]

Re: perl filter auf win32

Reinhard Pagitsch schrieb:
> Hallo,
>
> Gerhard Wolf wrote:
>
>> Hallo,
>>
>> C:>dir | tohtml.pl
>>
>> etwas ausgeben! Auf meinem Win32 System
>> erhalte ich nur eine Leerzeile sonst nichts.
>> WARUM?
>>
>
> Weil man einem Script unter Windows nichts über eine pipe übergeben kann?
>
> Probier mal das:
>
> tohtml.bat:
> [at] rem = '--*-Perl-*--
> [at] echo off
> if "%OS%" == "Windows_NT" goto WinNT
> perl -x -S "%0" %1 %2 %3 %4 %5 %6 %7 %8 %9
> goto endofperl
> :WinNT
> perl -x -S %0 %*
> if NOT "%COMSPEC%" == "%SystemRoot%\system32\cmd.exe" goto endofperl
> if %errorlevel% == 9009 echo You do not have Perl in your PATH.
> if errorlevel 1 goto script_failed_so_exit_with_non_zero_val 2>nul
> goto endofperl
> [at] rem ';
> #!d:/perl/bin/perl -w
> #line 15
>
> while(<>) {
> print;
> }
> __END__
> :endofperl
>
>
> Auch das funkt:
> dir |perl tohtml.pl
>
> Grüße
> Reinhard
Aaaaah.
Das war bei win_dos nicht immer so.
Danke! dir |perl tohtml.pl reicht mir völlig.
Gerhard Wolf [ Fr, 10 November 2006 12:50 ] [ ID #1531593 ]

Re: perl filter auf win32

Gerhard Wolf wrote:
> Hallo,
>
> diese einfach Filter:
> ---------tohtml.pl-------------
> while (<>) {
> $n++;
> s/\n/<br>\n/g;
> print;
> }
> -------------------------------
> selbst so ein Nichtsnutz wie:
> -------------------------------
> while(<>) {
> print;
> }
> -------------------------------
> müsste doch bei folgendem Aufruf:
>
> C:>dir | tohtml.pl
>
Versuch mal: dir | perl tohtml.pl
Das funktioniert bei mir unter OS2 und unter Win2000.

> etwas ausgeben! Auf meinem Win32 System
> erhalte ich nur eine Leerzeile sonst nichts.
> WARUM?
>
>
> http://www.unix.org.ua/orelly/perl/cookbook/ch07_08.htm#ch07 -pgfId-1000=
001149
>
Schönen Gruß aus dem Bergischen Land
Robert
Robert Berghaus [ Fr, 10 November 2006 12:58 ] [ ID #1531594 ]
Perl » de.comp.lang.perl.misc » perl filter auf win32

Vorheriges Thema: Klasse von Canvas ableiten
Nächstes Thema: LWP: 408 User-agent timeout (select)