#!/perl/bin/perl # # tag2msql.pl -- convert ctags -x output into a mysql table. use strict; use warnings; use diagnostics; use DBI; my $dbh = DBI->connect( 'DBI:mysql:host=localhost;database=blitzen', '', '', { PrintError => 0, RaiseError => 1 } ) or die "Cannot connect to Database\n"; my $theQuery; my ($symbol,$type,$line_number,$file_name,$source); while (<>) { if (/^operator/i) { /(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*)/; ($symbol,$type,$line_number,$file_name,$source) = ("$1 $2",$3,$4,$5,$6); } else { /(.*?)\s+(.*?)\s+(.*?)\s+(.*?)\s+(.*)/; ($symbol,$type,$line_number,$file_name,$source) = ($1,$2,$3,$4,$5); } $symbol = $dbh->quote($symbol); $type = $dbh->quote($type); $line_number = $dbh->quote($line_number); $file_name = $dbh->quote($file_name); $source = $dbh->quote($source); $theQuery = qq{ INSERT symbols(symbol,type,line_number,file_name,source) VALUES($symbol,$type,$line_number,$file_name,$source) }; $dbh->do($theQuery) or warn("Cannot do query\n"); } $dbh->disconnect(); #mysql> describe symbol; #+-------------+--------------+------+-----+---------+-------+ #| Field | Type | Null | Key | Default | Extra | #+-------------+--------------+------+-----+---------+-------+ #| symbol | varchar(250) | | PRI | | | #| type | varchar(250) | | MUL | | | #| line_number | smallint(6) | | PRI | 0 | | #| file_name | varchar(200) | | PRI | | | #| source | varchar(250) | | | | | #+-------------+--------------+------+-----+---------+-------+ #5 rows in set (0.00 sec)