Mysql 如何在search and replace perl语句中进行搜索和替换?

Mysql 如何在search and replace perl语句中进行搜索和替换?,mysql,perl,replace,escaping,single-quotes,Mysql,Perl,Replace,Escaping,Single Quotes,我在Perl v 5.18.2中使用bash shell。我在做这个声明 perl -pi -e "s/([^,]+),([^,]+),([^,]+),(.*[^\n]+)\n/select '\$1', u.id, u.first_Name, u.last_name, u.url FROM user u, user_role ur where u.id = ur.user_id and lower(ur.role_id) = '\$2' and lower(u.first_name) = lo

我在Perl v 5.18.2中使用bash shell。我在做这个声明

perl -pi -e "s/([^,]+),([^,]+),([^,]+),(.*[^\n]+)\n/select '\$1', u.id, u.first_Name, u.last_name, u.url FROM user u, user_role ur where u.id = ur.user_id and lower(ur.role_id) = '\$2' and lower(u.first_name) = lower('\$3') and lower(u.last_name) = lower('\$4');/g" /tmp/users.csv 

但我想做的是,在将“$3”和“$4”参数放入这个perl语句的replace部分之前,我想转义其中可能出现的任何单引号,以便SQL语句正常运行(这将在MySQL 5.5.18上运行)。如何调整上述参数,以便在perl替换$3和$4参数时,用转义的MySQL单引号替换单引号

perl -pi -e "sub R{(\$a=shift)=~s/'/''/g;\$a;} s/([^,]+),([^,]+),([^,]+),(.*[^\n]+)\n/select '\$1', u.id, u.first_Name, u.last_name, u.url FROM user u, user_role ur where u.id = ur.user_id and lower(ur.role_id) = '\$2' and lower(u.first_name) = lower('@{[R(\$3)]}') and lower(u.last_name) = lower('@{[R(\$4)]}');/g;" /tmp/users.csv
Perl转换任何字符串(包括正则表达式)。并执行
@{[code]}
中包含的任何代码


创建用于转义MySQL字符串的函数(
R()
),并从替换字符串中调用它作为
{[R($3)]}

“我想转义可能出现在其中的任何单引号,以便SQL语句正常运行”这种方式是疯狂的。使用和。好的,那你怎么做呢?