NAME Parse::ExuberantCTags::Merge - Efficiently merge large exuberant ctags files SYNOPSIS use Parse::ExuberantCTags::Merge; my $merger = Parse::ExuberantCTags::Merge->new(); $merger->add_file('perltags.old', sorted => 0); $merger->add_file('perltags.new', sorted => 1); $merger->add_file('perltags.new2', sorted => 1); # potentially add more files... # sorting happens only when you call 'write': $merger->write('perltags.out'); DESCRIPTION This Perl module is intended to merge multiple *exuberant ctags* files. The synopsis says all about the interface. In order to be as efficient as possible, the module uses different sort methods depending on the input data. In the general case, it will use the Sort::External module to process the data. There are a few exceptions: Pre-sorted input files If two or more input files contain sorted data, we use the File::MergeSort module to efficiently sort them before merging with the remaining data. Small input files If the total size of the input files is small, we load them into memory and use Perl's fast sort function. Default limit: "2^21B == 4MB". Super-small input files If the total size of the input files is extremely small, we ignore whether they're sorted or not and simply resort to Perl's sort. Default limit: "2^17B == 128kB". The sorting modules are loaded at run-time on demand only. TODO Benchmark. SEE ALSO Exuberant ctags homepage: Wikipedia on ctags: Module that can produce ctags files from Perl code: Perl::Tags Module that can parse exuberant ctags files: Parse::ExuberantCTags Sorting modules: Sort::External, File::MergeSort File::PackageIndexer AUTHOR Steffen Mueller, COPYRIGHT AND LICENSE Copyright (C) 2009 by Steffen Mueller This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.6 or, at your option, any later version of Perl 5 you may have available.