SQL::Tokenizer - A simple SQL tokenizer.
Contents
Acknowledgements
• Evan Harris, for implementing Shell comment style and SQL operators.
• Charlie Hills, for spotting a lot of important issues I haven't thought.
• Jonas Kramer, for fixing MySQL quoted strings and treating dot as punctuation character correctly.
• Emanuele Zeppieri, for asking to fix SQL::Tokenizer to support dollars as well.
• Nigel Metheringham, for extending the dollar signal support.
• Devin Withers, for making it not choke on CR+LF in comments.
• Luc Lanthier, for simplifying the regex and make it not choke on backslashes.
Api
tokenize_sql
use SQL::Tokenizer qw(tokenize_sql);
my @tokens= tokenize_sql($query);
my $tokens= tokenize_sql($query);
$tokens= tokenize_sql( $query, $remove_white_tokens );
"tokenize_sql" can be imported to current namespace on request. It receives a SQL query, and returns
an array of tokens if called in list context, or an arrayref if called in scalar context.
tokenize
my @tokens= SQL::Tokenizer->tokenize($query);
my $tokens= SQL::Tokenizer->tokenize($query);
$tokens= SQL::Tokenizer->tokenize( $query, $remove_white_tokens );
This is the only available class method. It receives a SQL query, and returns an array of tokens if
called in list context, or an arrayref if called in scalar context.
If $remove_white_tokens is true, white spaces only tokens will be removed from result.
Description
SQL::Tokenizer is a simple tokenizer for SQL queries. It does not claim to be a parser or query verifier.
It just creates sane tokens from a valid SQL query.
It supports SQL with comments like:
-- This query is used to insert a message into
-- logs table
INSERT INTO log (application, message) VALUES (?, ?)
Also supports '', "" and "\'" escaping methods, so tokenizing queries like the one below should not be a
problem:
INSERT INTO log (application, message)
VALUES ('myapp', 'Hey, this is a ''single quoted string''!')
Name
SQL::Tokenizer - A simple SQL tokenizer.
Synopsis
use SQL::Tokenizer qw(tokenize_sql);
my $query= q{SELECT 1 + 1};
my @tokens= SQL::Tokenizer->tokenize($query);
# @tokens now contains ('SELECT', ' ', '1', ' ', '+', ' ', '1')
@tokens= tokenize_sql($query); # procedural interface
Version
0.20
