Walk a directory/Recursively: Difference between revisions

Line 213:
#load "str.cma"
open Unix
 
let push li vl = li := List.rev_append vl !li
 
let walk_directory_tree dir pattern =
let select str = Str.string_match (Str.regexp pattern) str 0 in
let acc = ref [] in
let rec walk dir =
let contents = Array.to_list (Sys.readdir dir) in
Line 231 ⟶ 228:
in
let matched = List.filter (select) files in
push acc matched;
(* recursively walk into sub-directories: *)
List.iterlet walkresults dirs=
List.fold_left (fun acc dir ->
let sub_result = walk dir in
let push li vl = li := List.rev_append vlsub_result !liacc
push acc ) matched; dirs
in
(results)
in
walk dir;
(!acc)
;;
 
Line 243 ⟶ 244:
List.iter print_endline results;
;;</ocaml>
 
 
=={{header|Perl}}==
Anonymous user