Binding operator

Binding operator
This operator is a really ugly, poor and clueless attempt to reach at least 1% of the power of the perl =~ operator :D
It allows some complex string operations to be performed efficently by operating directly on the left operand (in fact this is a lot faster in KVIrc since at least one step of parsing is skipped).
Its basic syntax is:
<left_operand> =~ <operation>[parameters]
Where <operation> may be one of 't','s' and parameters depend on it.
<left_operand> is the target of the <operation>.
If <left_operand> is an array or dictionary, the <operation> is executed on each item they contain.
Operation 't' is the transliteration.
The complete syntax with parameters is:
<left_operand> =~ t/<search characters>/<replacement characters>/
where <search characters> is a string of characters that are replaced with the corresponding characters in <replacement characters>.
This operation can be also named 'y' or 'tr' (to preserve some compatibility with other languages).

%A=This is a test string
echo %A
%A=~ tr/abcdefghi/ABCDEFGHI/
echo %A

Operation 's' is the substitution.
The complete syntax with parameters is:
<left_operand> =~ s/<search pattern>/<replacement pattern>/[flags]
where <search pattern> is an extended regular expression to be matched in the <left_operand> and <replacement string> is a special pattern that will replace any occurence found.
<search pattern> may contain parentheses to capture parts of the matched text. <replacement string> can contain the escape sequences \\N where N is a number between 1 and 9 to be replaced by the captured text.
(We use \\N because KVIrc will first unquote the string when parsing...)
\\0 is a special escape that will be replaced by the entire match (is always valid!).
[flags] may be a combination of the letters 'g','i' and 'w'.
'g' causes the search to be global and not stop after the first occurence of <search pattern>.
'i' causes the search to be case insensitive.
'w' causes the search pattern to be interpreted as a simple wildcard regular expression.

%A=This is a test string
echo %A
%A=~ s/([a-z])i([a-z])/\\1I\\2/
echo %A
%A=~ s/([a-z])i([a-z])/\\1@\\2/gi
echo %A

Examples

    %a = ""
    %a << free
    echo %a
    %a .= bsd
    echo %a
    %a << rox
    echo %a
    %a <, but linux is better!
    echo %a

See also
operators


Index, Language Overview
KVIrc 3.9.99 Documentation
Generated by root at Wed Oct 17 19:34:06 2007