Beefy Boxes and Bandwidth Generously Provided by pair Networks
We don't bite newbies here... much
 
PerlMonks  

Re^2: How to search string in all files in directory

by oh5yw (Novice)
on Dec 11, 2008 at 06:25 UTC ( [id://729616]=note: print w/replies, xml ) Need Help??


in reply to Re: How to search string in all files in directory
in thread How to search string in all files in directory

No help got only this Software error: syntax error at testi7.cgi line 8, near "use File::Find::Rule sub fullPathToFile #($StartDirectory,$SearchExpression) " Execution of testi7.cgi aborted due to compilation errors.
  • Comment on Re^2: How to search string in all files in directory

Replies are listed 'Best First'.
Re^3: How to search string in all files in directory
by parv (Parson) on Dec 11, 2008 at 06:33 UTC
      well after putting semicolon, got this huge error list:
      Software error: Global symbol "$LocationOfTheStartDir" requires explicit package name +at testi7.cgi line 31. Global symbol "$SearchExp" requires explicit package name at testi7.cg +i line 32. Global symbol "@AllFilePaths" requires explicit package name at testi7 +.cgi line 33. Global symbol "$LocationOfTheStartDir" requires explicit package name +at testi7.cgi line 33. Global symbol "$SearchExp" requires explicit package name at testi7.cg +i line 33. Global symbol "$InputFile" requires explicit package name at testi7.cg +i line 35. Global symbol "@AllFilePaths" requires explicit package name at testi7 +.cgi line 35. Global symbol "@AllLinesFromTheFile" requires explicit package name at + testi7.cgi line 36. Global symbol "$InputFile" requires explicit package name at testi7.cg +i line 36. Global symbol "$line" requires explicit package name at testi7.cgi lin +e 37. Global symbol "@AllLinesFromTheFile" requires explicit package name at + testi7.cgi line 37. Global symbol "$line" requires explicit package name at testi7.cgi lin +e 38. Global symbol "$line" requires explicit package name at testi7.cgi lin +e 39. Global symbol "@AllLinesFromTheFile" requires explicit package name at + testi7.cgi line 43. Execution of testi7.cgi aborted due to compilation errors.
        Please pick up the "Learning Perl" book or some other Perl resources to familiarize yourself before you do anything substantial in Perl. Use Super Search to search around here for more on the subject.
Re^3: How to search string in all files in directory
by gasho (Beadle) on Dec 11, 2008 at 14:34 UTC
    Most likely you have not installed File::Find::Rule Try this code without calling any modules
    sub fullPathFileName #($StartDirectory,$RegularExpression) { #my ($StartDirectory,$WhildCardSearch)= @_; my ($StartDirectory,$RegularExpression)= @_; my(@A,$e,$C,@B,$a,@C,@Dir,$InputDir,@AllTestSuitefiles,@TestSuitef +iles,$p,@FullPath); #Purpose is to extract all paths to directories and subdirectories @A=`dir $StartDirectory /s/w ` ; foreach $e (@A) { $C=substr($e,0,10); #Extract only string that starts with Directory if($C eq " Directory") { push(@B,$e); } } # Directory of C:\cr1_qc\crnqcV3\CM\Bering\Results\object_test_ +mssql\Root\DirectorySuite\GroupsandRolesSuite\OutputPages # I want to start from C: foreach $a (@B) { push(@C,substr($a,14)); } #Remove lash char that is whitespace @Dir=trim(@C); foreach $InputDir (@Dir) { opendir(ODH,"$InputDir")|| die "Can't open dir\n"; @AllTestSuitefiles=readdir(ODH); # @TestSuitefiles=glob("$WhildCardSearch"); closedir(ODH); # Find all files @TestSuitefiles=grep(m/$RegularExpression/,@AllTestSuitefiles) +; foreach $p (@TestSuitefiles) { push(@FullPath,"$InputDir\\$p"); } } return @FullPath; }#fullPathFileName $LocationOfTheStartDir='C:\chat'; $SearchExp='*.htm'; @AllFilePaths=fullPathToFile($LocationOfTheStartDir,$SearchExp); foreach $InputFile (@AllFilePaths){ @AllLinesFromTheFile = `type $InputFile`; foreach $line (@AllLinesFromTheFile){ if ($line=~/DesiredString/){ print "$line"; } } @AllLinesFromTheFile=(); }
    (: Life is short enjoy it :)
      I forget to add this function at the beginning
      sub trim # (@NonTrimmedArray) { my @out=@_; for (@out) { s/^\s+//; s/\s+$//; } return wantarray ? @out : $out[0]; }
      (: Life is short enjoy it :)
      This one is fully tested
      #!perl sub trim # (@NonTrimmedArray) { my @out=@_; for (@out) { s/^\s+//; s/\s+$//; } return wantarray ? @out : $out[0]; } sub fullPathFileName #($StartDirectory,$RegularExpression) { #my ($StartDirectory,$WhildCardSearch)= @_; my ($StartDirectory,$RegularExpression)= @_; my(@A,$e,$C,@B,$a,@C,@Dir,$InputDir,@AllTestSuitefiles,@TestSuitef +iles,$p,@FullPath); #Purpose is to extract all paths to directories and subdirectories @A=`dir $StartDirectory /s/w ` ; foreach $e (@A) { $C=substr($e,0,10); #Extract only string that starts with Directory if($C eq " Directory") { push(@B,$e); } } # Directory of C:\cr1_qc\crnqcV3\CM\Bering\Results\object_test_ +mssql\Root\DirectorySuite\GroupsandRolesSuite\OutputPages # I want to start from C: foreach $a (@B) { push(@C,substr($a,14)); } #Remove lash char that is whitespace @Dir=trim(@C); foreach $InputDir (@Dir) { opendir(ODH,"$InputDir")|| die "Can't open dir\n"; @AllTestSuitefiles=readdir(ODH); # @TestSuitefiles=glob("$WhildCardSearch"); closedir(ODH); # Find all files @TestSuitefiles=grep(m/$RegularExpression/,@AllTestSuitefiles) +; foreach $p (@TestSuitefiles) { push(@FullPath,"$InputDir\\$p"); } } return @FullPath; }#fullPathFileName $LocationOfTheStartDir='C:\chat'; $RegExp='\.txt$'; @AllFilePaths=fullPathFileName($LocationOfTheStartDir,$RegExp); foreach $InputFile (@AllFilePaths){ @AllLinesFromTheFile = `type $InputFile`; foreach $line (@AllLinesFromTheFile){ if ($line=~/DesiredString/){ print "$line"; } } @AllLinesFromTheFile=(); }
      (: Life is short enjoy it :)
        ...sigh.. still the same error 500 internal error... Could it be that I change $LocationOfTheStartDir='C:\chat'; to 'chat' as this chat directory is on my server at webhotel...directory is public_html\bluechat\chat and script is in bluechat directory.... I am confused
      No joy still... got only this:
      Software error: Global symbol "$LocationOfTheStartDir" requires explicit package name +at testi7.cgi line 63. Global symbol "$SearchExp" requires explicit package name at testi7.cg +i line 64. Global symbol "@AllFilePaths" requires explicit package name at testi7 +.cgi line 65. Global symbol "$LocationOfTheStartDir" requires explicit package name +at testi7.cgi line 65. Global symbol "$SearchExp" requires explicit package name at testi7.cg +i line 65. Global symbol "$InputFile" requires explicit package name at testi7.cg +i line 67. Global symbol "@AllFilePaths" requires explicit package name at testi7 +.cgi line 67. Global symbol "@AllLinesFromTheFile" requires explicit package name at + testi7.cgi line 68. Global symbol "$InputFile" requires explicit package name at testi7.cg +i line 68. Global symbol "$line" requires explicit package name at testi7.cgi lin +e 69. Global symbol "@AllLinesFromTheFile" requires explicit package name at + testi7.cgi line 69. Global symbol "$line" requires explicit package name at testi7.cgi lin +e 70. Global symbol "$line" requires explicit package name at testi7.cgi lin +e 71. Global symbol "@AllLinesFromTheFile" requires explicit package name at + testi7.cgi line 75. Execution of testi7.cgi aborted due to compilation errors.
      Now I remove 2 stupid own lines at the beginning and now I got only this error: Software error: Undefined subroutine &main::fullPathToFile called at testi7.cgi line 63. Kari

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: note [id://729616]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others exploiting the Monastery: (7)
As of 2024-04-26 08:45 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found