perl filter auf win32
am 10.11.2006 12:04:51 von Gerhard Wolf
Hallo,
diese einfach Filter:
---------tohtml.pl-------------
while (<>) {
$n++;
s/\n/
\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
Re: perl filter auf win32
am 10.11.2006 12:14:51 von Mirco Wahab
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
Re: perl filter auf win32
am 10.11.2006 12:24:55 von Reinhard Pagitsch
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:
@rem = '--*-Perl-*--
@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
@rem ';
#!d:/perl/bin/perl -w
#line 15
while(<>) {
print;
}
__END__
:endofperl
Auch das funkt:
dir |perl tohtml.pl
Grüße
Reinhard
Re: perl filter auf win32
am 10.11.2006 12:30:14 von Reinhard Pagitsch
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
Re: perl filter auf win32
am 10.11.2006 12:42:29 von Mirco Wahab
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.
Re: perl filter auf win32
am 10.11.2006 12:50:45 von Gerhard Wolf
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:
> @rem = '--*-Perl-*--
> @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
> @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.
Re: perl filter auf win32
am 10.11.2006 12:58:52 von Robert Berghaus
Gerhard Wolf wrote:
> Hallo,
>=20
> diese einfach Filter:
> ---------tohtml.pl-------------
> while (<>) {
> $n++;
> s/\n/
\n/g;
> print;
> }
> -------------------------------
> selbst so ein Nichtsnutz wie:
> -------------------------------
> while(<>) {
> print;
> }
> -------------------------------
> müsste doch bei folgendem Aufruf:
>=20
> C:>dir | tohtml.pl
>=20
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?
>=20
>=20
> http://www.unix.org.ua/orelly/perl/cookbook/ch07_08.htm#ch07 -pgfId-1000=
001149=20
>=20
Schönen Gruß aus dem Bergischen Land
Robert