This will do what you want.
my $sql = SQL::Abstract->new;
my $table ='atable';
my %data = (a=>q/NULL/,b=>1,c=>q/'string and string'/);
my $stmt_and_val = $sql->generate('INSERT INTO', \$table, \%data);
INSERT INTO atable SET a = NULL, b = 1, c = 'string and string'
And yes, unfortunately, you will have to take care of quoting the data yourself.
A program should be light and agile, its subroutines connected like a string of pearls. The spirit and intent of the program should be retained throughout. There should be neither too little or too much, neither needless loops nor useless variables, neither lack of structure nor overwhelming rigidity." - The Tao of Programming, 4.1 - Geoffrey James