: str_replace(): Passing null to parameter #2 ($replace) of type array|string is deprecated in
return state.tokenize(stream,state);}
function tokenSOMETHING(stream,state,string){
state.tokenize=function(stream,state){
if(stream.string==string)
state.tokenize=tokenPerl;
return state.tokenize(stream,state);}
function tokenPerl(stream,state){
return tokenChain(stream,state,state.chain,state.style,state.tail);
if(stream.match(/^\-?[\d\.]/,false))
if(stream.match(/^(\-?(\d*\.\d+(e[+-]?\d+)?|\d+\.\d*)|0x[\da-fA-F]+|0b[01]+|\d+(e[+-]?\d+)?)/))
if(stream.match(/^<<(?=\w)/)){ // NOTE: <<SOMETHING\n...\nSOMETHING\n
return tokenSOMETHING(stream,state,stream.current().substr(2));}
if(stream.sol()&&stream.match(/^\=item(?!\w)/)){// NOTE: \n=item...\n=cut\n
return tokenSOMETHING(stream,state,'=cut');}
if(ch=='"'||ch=="'"){ // NOTE: ' or " or <<'SOMETHING'\n...\nSOMETHING\n or <<"SOMETHING"\n...\nSOMETHING\n
if(prefix(stream, 3)=="<<"+ch){
var n=stream.current().substr(1);
return tokenSOMETHING(stream,state,n);
return tokenChain(stream,state,[ch],"string");}
return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}
if(/[\^'"!~\/]/.test(c)){
return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}
return tokenChain(stream,state,[")"],"string");}
return tokenChain(stream,state,["]"],"string");}
return tokenChain(stream,state,["}"],"string");}
return tokenChain(stream,state,[">"],"string");}
if(/[\^'"!~\/]/.test(c)){
return tokenChain(stream,state,[stream.eat(c)],"string");}}
return tokenChain(stream,state,[")"],"bracket");}
return tokenChain(stream,state,["]"],"bracket");}
return tokenChain(stream,state,["}"],"bracket");}
return tokenChain(stream,state,[">"],"bracket");}
if(/[\^'"!~\/]/.test(c)){
return tokenChain(stream,state,[stream.eat(c)],"bracket");}}
return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}
if(/[\^'"!~\/]/.test(c)){
return tokenChain(stream,state,[stream.eat(c)],RXstyle,RXmodifiers);}}
else if(/[\^'"!~\/(\[{<]/.test(c)){
return tokenChain(stream,state,[")"],"string");}
return tokenChain(stream,state,["]"],"string");}
return tokenChain(stream,state,["}"],"string");}
return tokenChain(stream,state,[">"],"string");}
if(/[\^'"!~\/]/.test(c)){
return tokenChain(stream,state,[stream.eat(c)],"string");}}}}
c=stream.eat(/[(\[{<\^'"!~\/]/);
if(/[\^'"!~\/]/.test(c)){
return tokenChain(stream,state,[c],RXstyle,RXmodifiers);}
return tokenChain(stream,state,[")"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,["]"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,["}"],RXstyle,RXmodifiers);}
return tokenChain(stream,state,[">"],RXstyle,RXmodifiers);}}}}
var c=/[\/>\]})\w]/.test(look(stream, -2));
c=stream.eat(/[(\[{<\^'"!~\/]/);
return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}
var c=/[\/>\]})\w]/.test(look(stream, -2));
c=stream.eat(/[(\[{<\^'"!~\/]/);
return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}
var c=/[\/>\]})\w]/.test(look(stream, -2));
c=stream.eat(/[(\[{<\^'"!~\/]/);
return tokenChain(stream,state,["]","]"],RXstyle,RXmodifiers);
return tokenChain(stream,state,["}","}"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[">",">"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[")",")"],RXstyle,RXmodifiers);
return tokenChain(stream,state,[c,c],RXstyle,RXmodifiers);}}}}
return tokenChain(stream,state,[ch],"variable-2");}
if(!/~\s*$/.test(prefix(stream)))
return tokenChain(stream,state,[ch],RXstyle,RXmodifiers);}
if(stream.eatWhile(/\d/)||stream.eat("{")&&stream.eatWhile(/\d/)&&stream.eat("}"))
if(stream.eat("^")&&stream.eat(/[A-Z]/)||!/[@$%&]/.test(look(stream, -2))&&stream.eat(/[=|\\\-#?@;:&`~\^!\[\]*'"$+.,\/<>()]/)){
if(stream.eatWhile(/[\w$\[\]]/)||stream.eat("{")&&stream.eatWhile(/[\w$\[\]]/)&&stream.eat("}")){
if(look(stream, -2)!="$"){
if(/[:+\-\^*$&%@=<>!?|\/~\.]/.test(ch)){
stream.eatWhile(/[:+\-\^*$&%@=<>!?|\/~\.]/);
if(PERL[stream.current()])
if(suffix(stream, 6)=="_END__"){
return tokenChain(stream,state,['\0'],"comment");}
else if(suffix(stream, 7)=="_DATA__"){
return tokenChain(stream,state,['\0'],"variable-2");}
else if(suffix(stream, 7)=="_C__"){
return tokenChain(stream,state,['\0'],"string");}}}
if(look(stream, -2)=="{"&&(look(stream, 0)=="}"||stream.eatWhile(/\w/)&&look(stream, 0)=="}"))
stream.eatWhile(/[A-Z_]/);
if(/[\da-z]/.test(look(stream, 0))){
var c=PERL[stream.current()];
if(/[a-zA-Z_]/.test(ch)){
var c=PERL[stream.current()];
token: function(stream, state) {
return (state.tokenize || tokenPerl)(stream, state);
CodeMirror.registerHelper("wordChars", "perl", /[\w$]/);
CodeMirror.defineMIME("text/x-perl", "perl");
// it's like "peek", but need for look-ahead or look-behind if index < 0
function look(stream, c){
return stream.string.charAt(stream.pos+(c||0));
// return a part of prefix of current stream from current position
function prefix(stream, c){
return stream.string.substr((x>=0?x:0),c);}
return stream.string.substr(0,stream.pos-1);
// return a part of suffix of current stream from current position
function suffix(stream, c){
var y=stream.string.length;
return stream.string.substr(stream.pos,(c&&c<y?c:x));
// eating and vomiting a part of stream from current position
function eatSuffix(stream, c){
else if(x>=(y=stream.string.length-1))