Thanks all for responses, and I have more perl reading than time, which will suit my dental cleaning appointment just fine tomorrow. I've skimmed what was posted mod one and taken what I thought most relevant for scripts moving forward. Right now, I'm drawing cpan errors with my strawberry perl install. I'm putting this output between readmore tags again along with the new source listing the way windows sees it.
+ cpan> install Devel
+::Refcount
Devel::Refcount is up to date (0.10).
+ cpan> install Win32
+::LongPath
Running install for module 'Win32::LongPath'
Checksum for C:\STRAWB~1\cpan\sources\authors\id\R\RB\RBOISVERT\Win32-
+LongPath-1.07.tar.gz ok
Scanning cache C:\STRAWB~1\cpan\build for sizes
......................................................................
+......DONE
Configuring R/RB/RBOISVERT/Win32-LongPath-1.07.tar.gz with Makefile.PL
Writing ppport.h
Checking if your kit is complete...
Looks good
Generating a dmake-style Makefile
Writing Makefile for Win32::LongPath
Writing MYMETA.yml and MYMETA.json
RBOISVERT/Win32-LongPath-1.07.tar.gz
C:\Strawberry\perl\bin\perl.exe Makefile.PL -- OK
Running make for R/RB/RBOISVERT/Win32-LongPath-1.07.tar.gz
cp lib/Win32/LongPath.pm blib\lib\Win32\LongPath.pm
Running Mkbootstrap for LongPath ()
"C:\Strawberry\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command -e chmod
+ -- 644 "LongPath.bs"
"C:\Strawberry\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command::MM -e c
+p_nonempty -- LongPath.bs blib\arch\auto\Win32\LongPath\LongPath.bs 6
+44
"C:\Strawberry\perl\bin\perl.exe" "-Iinc" "C:\Strawberry\perl\lib\ExtU
+tils\xsubpp" -typemap C:\STRAWB~1\perl\lib\ExtUtils\typemap xs\Long
+Path.xs > xs\LongPath.xsc
"C:\Strawberry\perl\bin\perl.exe" "-Iinc" -MExtUtils::Command -e mv --
+ xs\LongPath.xsc xs\LongPath.c
gcc -c "-I." "-I." -s -O2 -DWIN32 -DWIN64 -DCONSERVATIVE -DPERL_
+TEXTMODE_SCRIPTS -DPERL_IMPLICIT_CONTEXT -DPERL_IMPLICIT_SYS -fwrapv
+-fno-strict-aliasing -mms-bitfields -Wall -W -Wno-comment -s -O2
+ -DVERSION=\"1.07\" -DXS_VERSION=\"1.07\" -o xs\LongPath.o "-IC:
+\STRAWB~1\perl\lib\CORE" -DUSE_PPPORT -DWINVER=0x0a00 -D_WIN32_WINNT
+=0x0a00 xs\LongPath.c
In file included from C:/STRAWB~1/perl/lib/CORE/hv.h:631,
from C:/STRAWB~1/perl/lib/CORE/perl.h:3904,
from xs\\LongPath.xs:21:
C:/STRAWB~1/perl/lib/CORE/hv_func.h: In function `S_perl_hash_murmur3'
+:
C:/STRAWB~1/perl/lib/CORE/hv_func.h:403: warning: cast from pointer to
+ integer of different size
xs\\LongPath.xs: In function `MakeSymbolicLink':
xs\\LongPath.xs:79: warning: implicit declaration of function `CreateS
+ymbolicLinkW'
xs\\LongPath.xs:80: error: `SYMBOLIC_LINK_FLAG_DIRECTORY' undeclared (
+first use in this function)
xs\\LongPath.xs:80: error: (Each undeclared identifier is reported onl
+y once
xs\\LongPath.xs:80: error: for each function it appears in.)
xs\\LongPath.xs: In function `XS_Win32__LongPath_find_close':
xs\\LongPath.xs:179: warning: cast to pointer from integer of differen
+t size
xs\\LongPath.xs: In function `XS_Win32__LongPath_find_first_file':
xs\\LongPath.xs:191: warning: cast from pointer to integer of differen
+t size
xs\\LongPath.xs: In function `XS_Win32__LongPath_find_next_file':
xs\\LongPath.xs:281: warning: cast to pointer from integer of differen
+t size
dmake.exe: Error code 129, while making 'xs\LongPath.o'
RBOISVERT/Win32-LongPath-1.07.tar.gz
C:\STRAWB~1\c\bin\dmake.exe -- NOT OK
Stopping: 'install' failed for 'Win32::LongPath'.
Failed during this command:
RBOISVERT/Win32-LongPath-1.07.tar.gz : make NO
+ cpan>
The way I see it is that I was doing alright. I believe to have cleared the cpan dependencies, but see complaints that look like things a C compiler says. Perl on windows 10 is such an odd platypus that I can't think of where C libraries are and how to remediate that.
Update
Source listing and errors:
C:\Users\Fred>type virus6.pl
#!/usr/bin/perl
use warnings;
use strict;
use File::Find;
use Cwd;
my $current = cwd;
find( \&pm_beneath, $current, );
sub pm_beneath {
use File::Basename;
use 5.01;
my $file = $File::Find::name;
my $ref_to_file = \$file;
my $days = .1; #hard-coded
my $basename = basename($file);
return if $file =~ /.*AppData.*/;
use Fcntl ':mode';
use Win32::LongPath qw(:funcs :fileattr);
# get object
testL ('e', $file)
or die "$file doesn't exist!";
$stat = statL ($file)
or die ("unable to get stat for $file ($^E)");
# this test for directory
$stat->{mode} & S_IFDIR ? print "Directory\n" : print "File\n"
+;
# is the same as this one
$stat->{attribs} & FILE_ATTRIBUTE_DIRECTORY ? print "Directory
+\n" : print "File\n";
# show file times as local time
printf "Created: %s\nAccessed: %s\nModified: %s\n",
scalar localtime $stat->{ctime},
scalar localtime $stat->{atime},
scalar localtime $stat->{mtime};
my $access_age = -M $basename;
return if ( $access_age > $days );
print "$file\n";
printf "$basename: M age in days: %.4f\n\n", $access_age;
say "ref to file is $ref_to_file";
}
__END__
C:\Users\Fred>perl virus6.pl
Can't locate Win32/LongPath.pm in @INC (you may need to install the Wi
+n32::LongPath module) (@INC contains: C:\Users\Fred\Documents\perl5\l
+ib\perl5/5.24.0/MSWin32-x64-multi-thread C:\Users\Fred\Documents\perl
+5\lib\perl5/5.24.0 C:\Users\Fred\Documents\perl5\lib\perl5/MSWin32-x6
+4-multi-thread C:\Users\Fred\Documents\perl5\lib\perl5 C:\Users\Fred\
+perl5\lib\perl5/5.24.0/MSWin32-x64-multi-thread C:\Users\Fred\perl5\l
+ib\perl5/5.24.0 C:\Users\Fred\perl5\lib\perl5/MSWin32-x64-multi-threa
+d C:\Users\Fred\perl5\lib\perl5 C:/Strawberry/perl/site/lib C:/Strawb
+erry/perl/vendor/lib C:/Strawberry/perl/lib .) at virus6.pl line 22.
BEGIN failed--compilation aborted at virus6.pl line 22.
C:\Users\Fred>