Walk a directory/Recursively: Difference between revisions
Content added Content deleted
Line 213: | Line 213: | ||
#load "str.cma" |
#load "str.cma" |
||
open Unix |
open Unix |
||
⚫ | |||
let walk_directory_tree dir pattern = |
let walk_directory_tree dir pattern = |
||
let select str = Str.string_match (Str.regexp pattern) str 0 in |
let select str = Str.string_match (Str.regexp pattern) str 0 in |
||
let acc = ref [] in |
|||
let rec walk dir = |
let rec walk dir = |
||
let contents = Array.to_list (Sys.readdir dir) in |
let contents = Array.to_list (Sys.readdir dir) in |
||
Line 231: | Line 228: | ||
in |
in |
||
let matched = List.filter (select) files in |
let matched = List.filter (select) files in |
||
⚫ | |||
(* recursively walk into sub-directories: *) |
(* recursively walk into sub-directories: *) |
||
let results = |
|||
List.fold_left (fun acc dir -> |
|||
let sub_result = walk dir in |
|||
⚫ | |||
⚫ | |||
in |
|||
(results) |
|||
in |
in |
||
walk dir |
walk dir |
||
(!acc) |
|||
;; |
;; |
||
Line 243: | Line 244: | ||
List.iter print_endline results; |
List.iter print_endline results; |
||
;;</ocaml> |
;;</ocaml> |
||
=={{header|Perl}}== |
=={{header|Perl}}== |