AnyData
view release on metacpan or search on metacpan
README FILE FOR PERL MODULE -- AnyData
WHY USE IT?
The AnyData modules provide simple and uniform access to data from
many sources -- perl arrays, local files, remote files retrievable via
http or ftp -- and in many formats including flat files (CSV, Fixed
Length, Tab Delimited, etc), standard format files (Web Logs,
Passwd files, etc.), structured files (XML, HTML Tables) and binary
files with parseable headers (mp3s, jpgs, pngs, etc).
There are two separate modules, each providing a different interface:
AnyData.pm provides a simple tied hash interface and DBD::AnyData
provides a DBI/SQL interface. You can use either or both depending on
your needs.
Here are a few examples of the tied hash interface:
# FIND A USER'S HOME DIRECTORY IN A PASSWD FILE
#
my $users = adTie( 'Passwd', '/etc/passwd' );
print $users->{jdoe}->{homedir};
# DELETE A PLAYER FROM A PIPE DELIMITED GAMES DATABASE
#
my $players = adTie( 'Pipe', 'games.db', 'u' );
delete $players->{jdoe};
# RECURSIVELY LIST THE ARTISTS FOR ALL REGGAE MP3s
# IN A SPECIFIED DIRECTORY TREE
#
my $music = adTie( 'Mp3', ['c:/My Music/'] );
while ( my $song = each %$music ) {
print $song->{artist},"\n" if $song->{genre} eq 'Reggae';
}
# RETRIEVE A CSV FILE FROM AN FTP SERVER
# AND PRINT IT TO THE SCREEN AS AN HTML TABLE
#
# print adConvert( 'CSV', 'ftp://foo.edu/pub/bar.csv', 'HTMLtable' );
# COUNT THE NUMBER OF HITS FOR A SPECIFIED PAGE IN A WEB LOG
#
my $hits = adTie( 'Weblog', 'access.log');
print adCount( $hits , request => 'mypage.html' );
# CREATE A CGI POP-UP MENU FROM A LISTING
# OF THE VALUES OF A TABLE COLUMN
#
my $game = adTie( 'Pipe','games.db' );
my @players = adColumn( $game, 'player' );
print CGI::popup_menu( 'players', \@players );
# SELECT OR MODIFY MULTIPLE ROWS BASED ON COMPLEX CRITERIA
# (this deletes all North American males over age 30)
#
my $data = adTie( 'Tab', 'mydb.tab');
delete $data->{{ country => qr/us|mx|ca/,
gender => 'eq m',
age => '> 30',
}};
WHAT ELSE DO I NEED?
* Perl
* Additional modules are required for some advanced features,
see 'perldoc AnyData'.
HOW DO I INSTALL IT?
( run in 0.782 second using v1.01-cache-2.11-cpan-df04353d9ac )