use strict;
my $str = 'define(function(require, exports, module) {
var UIKit = require(\'uikit/uikit\');
var ExtendUtil = require(\'helpers/extend.util\');
var ConfirmModalView = UIKit.Modal2.extend({
define([
\'underscore\',
\'marionette\',
\'../libs/spf.helper\',
\'../templates\',
\'uikit/injector\',
\'uikit/component.collection.view\',
\'uikit/grid\',
\'uikit/table\',
\'uikit/text\',
\'uikit/button\'
], function(_, Mn,
// data stuff
SPFHelper,
Templates,
// view stuff
InjectorView, ComponentCollectionView, GridView, TableView, TextView, ButtonView) {';
my $regex = qr/(define[\s\S]*{)([\s\S\n\r]+?)(var\s+)([$\w_]+)(\s+)(.*)([,;])([\s\S\n\r]+?)(\w)/p;
my $subst = '\\1\\2var _ = require(\'underscore\'),\\8 \\4\\5\\6\\7\\8\\9';
my $result = $str =~ s/$regex/$subst/rg;
print "The result of the substitution is' $result\n";
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html