in reply to Re^3: how to handle the warnings in a find statement
in thread how to handle the warnings in a find statement
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>
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^5: how to handle the warnings in a find statement
by huck (Prior) on Dec 20, 2016 at 09:55 UTC | |
by huck (Prior) on Dec 20, 2016 at 10:13 UTC | |
by Aldebaran (Curate) on Dec 21, 2016 at 05:55 UTC | |
by beech (Parson) on Dec 21, 2016 at 08:23 UTC |