S
Scott
Hi,
I have this test script:
my $dir = "C:/WINNT";
opendir(DIR,$dir) || die("Cannot open directory $dir");
my @files = readdir DIR;
closedir(DIR);
foreach (@files) {
print "$_\n" if -d; # -d -f -t -T -B
}
I've cycled thru the tests as per the comment line above.
Here is the (annotated) output:
C:\Perl\my.scripts>test2 (-d)
..
...
C:\Perl\my.scripts>test2 (-f)
C:\Perl\my.scripts>test2 (-t a bit nonsensical to try but...)
..
...
$NtUninstallKB329115$
$NtUninstallKB820888$
$NtUninstallKB822831$
$NtUninstallKB823182$
$NtUninstallKB824105$
$NtUninstallKB825119$
$NtUninstallKB826232$
$NtUninstallKB828749$
$NtUninstallKB837272$
$NtUninstallKB839643-DirectX9$
$NtUninstallKB839645$
$NtUninstallKB840315$
$NtUninstallKB841872$
$NtUninstallKB841873$
$NtUninstallKB842526$
$NtUninstallQ818043$
$NtUninstallQ828026$
Active Setup Log.txt
(rest deleted)
C:\Perl\my.scripts>test2 (-T)
C:\Perl\my.scripts>test2 (-B)
C:\Perl\my.scripts>
For -d, I would have expected it to list all the directories (only) under
C:\WINNT.
For -f, I would have expected it to list all the plain files (i.e.
everything except directories)
For -t, I'm not sure what it should have listed. The doc says "-t
Filehandle is opened to a tty."
For -T, I would have expected it to list all the ASCII text files.
For -B, I would have expected it to list all the binary files.
Any idea what I might be doing wrong? Are my assumptions incorrect?
In my actual script, I have to read a directory, and process only the
returned directories in that directory. I'm running ActiveState PERL under
Windows 2000 Professional.
Here is the version of PERL I'm using:
C:\Perl\my.scripts>perl -V
Summary of my perl5 (revision 5 version 8 subversion 3) configuration:
Platform:
osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
usethreads=undef use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cl', ccflags
='-nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT
-DNO_HASH_SEED -DPERL_IMPLICIT_CONTEXT -DPERL_IMPL
ICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX',
optimize='-MD -Zi -DNDEBUG -O1',
cppflags='-DWIN32'
ccversion='', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='link', ldflags
'-nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -machine:x86'
libpth=C:\PROGRA~1\MICROS~3\VC98\lib
libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib
uuid.lib wsoc
k32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib
perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib
uuid.lib
wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib
msvcrt.lib
libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl58.lib
gnulibc_version='undef'
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ',
lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE"
-machine:x86'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
Locally applied patches:
ActivePerl Build 809
22218 Remove the caveat about detached threads crashing on Windows
22201 Avoid threads+win32 crash by freeing Perl interpreter slightly
later
22169 Display 'out of memeory' errors using low-level I/O
22159 Upgrade to Time::Hires 1.55
22120 Make 'Configure -Dcf_by=...' work
22051 Upgrade to Time::HiRes 1.54
21540 Fix backward-compatibility issues in if.pm
Built under MSWin32
Compiled at Feb 3 2004 00:28:51
@INC:
C:/Perl/lib
C:/Perl/site/lib
I have this test script:
my $dir = "C:/WINNT";
opendir(DIR,$dir) || die("Cannot open directory $dir");
my @files = readdir DIR;
closedir(DIR);
foreach (@files) {
print "$_\n" if -d; # -d -f -t -T -B
}
I've cycled thru the tests as per the comment line above.
Here is the (annotated) output:
C:\Perl\my.scripts>test2 (-d)
..
...
C:\Perl\my.scripts>test2 (-f)
C:\Perl\my.scripts>test2 (-t a bit nonsensical to try but...)
..
...
$NtUninstallKB329115$
$NtUninstallKB820888$
$NtUninstallKB822831$
$NtUninstallKB823182$
$NtUninstallKB824105$
$NtUninstallKB825119$
$NtUninstallKB826232$
$NtUninstallKB828749$
$NtUninstallKB837272$
$NtUninstallKB839643-DirectX9$
$NtUninstallKB839645$
$NtUninstallKB840315$
$NtUninstallKB841872$
$NtUninstallKB841873$
$NtUninstallKB842526$
$NtUninstallQ818043$
$NtUninstallQ828026$
Active Setup Log.txt
(rest deleted)
C:\Perl\my.scripts>test2 (-T)
C:\Perl\my.scripts>test2 (-B)
C:\Perl\my.scripts>
For -d, I would have expected it to list all the directories (only) under
C:\WINNT.
For -f, I would have expected it to list all the plain files (i.e.
everything except directories)
For -t, I'm not sure what it should have listed. The doc says "-t
Filehandle is opened to a tty."
For -T, I would have expected it to list all the ASCII text files.
For -B, I would have expected it to list all the binary files.
Any idea what I might be doing wrong? Are my assumptions incorrect?
In my actual script, I have to read a directory, and process only the
returned directories in that directory. I'm running ActiveState PERL under
Windows 2000 Professional.
Here is the version of PERL I'm using:
C:\Perl\my.scripts>perl -V
Summary of my perl5 (revision 5 version 8 subversion 3) configuration:
Platform:
osname=MSWin32, osvers=4.0, archname=MSWin32-x86-multi-thread
uname=''
config_args='undef'
hint=recommended, useposix=true, d_sigaction=undef
usethreads=undef use5005threads=undef useithreads=define
usemultiplicity=define
useperlio=define d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
usemymalloc=n, bincompat5005=undef
Compiler:
cc='cl', ccflags
='-nologo -Gf -W3 -MD -Zi -DNDEBUG -O1 -DWIN32 -D_CONSOLE -DNO_STRICT -DHAVE_DES_FCRYPT
-DNO_HASH_SEED -DPERL_IMPLICIT_CONTEXT -DPERL_IMPL
ICIT_SYS -DUSE_PERLIO -DPERL_MSVCRT_READFIX',
optimize='-MD -Zi -DNDEBUG -O1',
cppflags='-DWIN32'
ccversion='', gccversion='', gccosandvers=''
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
d_longlong=undef, longlongsize=8, d_longdbl=define, longdblsize=10
ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='__int64',
lseeksize=8
alignbytes=8, prototype=define
Linker and Libraries:
ld='link', ldflags
'-nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE" -machine:x86'
libpth=C:\PROGRA~1\MICROS~3\VC98\lib
libs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib
uuid.lib wsoc
k32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib msvcrt.lib
perllibs= oldnames.lib kernel32.lib user32.lib gdi32.lib winspool.lib
comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib netapi32.lib
uuid.lib
wsock32.lib mpr.lib winmm.lib version.lib odbc32.lib odbccp32.lib
msvcrt.lib
libc=msvcrt.lib, so=dll, useshrplib=yes, libperl=perl58.lib
gnulibc_version='undef'
Dynamic Linking:
dlsrc=dl_win32.xs, dlext=dll, d_dlsymun=undef, ccdlflags=' '
cccdlflags=' ',
lddlflags='-dll -nologo -nodefaultlib -debug -opt:ref,icf -libpath:"C:\Perl\lib\CORE"
-machine:x86'
Characteristics of this binary (from libperl):
Compile-time options: MULTIPLICITY USE_ITHREADS USE_LARGE_FILES
PERL_IMPLICIT_CONTEXT PERL_IMPLICIT_SYS
Locally applied patches:
ActivePerl Build 809
22218 Remove the caveat about detached threads crashing on Windows
22201 Avoid threads+win32 crash by freeing Perl interpreter slightly
later
22169 Display 'out of memeory' errors using low-level I/O
22159 Upgrade to Time::Hires 1.55
22120 Make 'Configure -Dcf_by=...' work
22051 Upgrade to Time::HiRes 1.54
21540 Fix backward-compatibility issues in if.pm
Built under MSWin32
Compiled at Feb 3 2004 00:28:51
@INC:
C:/Perl/lib
C:/Perl/site/lib