- if ($str =~ m|^\s*s([/,#\|])(.+?)\1(.*?)\1([a-z]*);?\s*$|) {
- my ($delim, $op, $np, $flags) = ($1,$2,$3,$4);
-
- if ($flags !~ /^(g)?$/) {
- &::msg($::who, "error: Invalid flags to regex.");
- return;
- }
-
- ### TODO: use m### to make code safe!
- # todo: make code safer.
- my $done = 0;
- # todo: use eval to deal with flags easily.
- if ($flags eq "") {
- $done++ if (!$done and $mod_news =~ s/\Q$op\E/$np/);
- $done++ if (!$done and $mod_nnews =~ s/\Q$op\E/$np/);
- } elsif ($flags eq "g") {
- $done++ if ($mod_news =~ s/\Q$op\E/$np/g);
- $done++ if ($mod_nnews =~ s/\Q$op\E/$np/g);
- }
-
- if (!$done) {
- &::msg($::who, "warning: regex not found in news.");
- return;
- }
-
- if ($mod_news ne $news) { # news item.
- if (exists $::news{$chan}{$mod_news}) {
- &::msg($::who, "item '$mod_news' already exists.");
- return;
- }
-
- &::msg($::who, "Moving item '$news' to '$mod_news' with SAR s/$op/$np/.");
- foreach (keys %{ $::news{$chan}{$news} }) {
- $::news{$chan}{$mod_news}{$_} = $::news{$chan}{$news}{$_};
- delete $::news{$chan}{$news}{$_};
- }
- # needed?
- delete $::news{$chan}{$news};
- }
-
- if ($mod_nnews ne $nnews) { # news Text/Description.
- &::msg($::who, "Changing text for '$news' SAR s/$op/$np/.");
- if ($mod_news ne $news) {
- $::news{$chan}{$mod_news}{Text} = $mod_nnews;
- } else {
- $::news{$chan}{$news}{Text} = $mod_nnews;
- }
- }
-
- return;
- } else {
- &::msg($::who, "error: that regex failed ;(");
- return;
- }
-
- &::msg($::who, "error: Invalid regex. Try s/1/2/, s#3#4#...");
+ if ( $str =~ m|^\s*s([/,#\|])(.+?)\1(.*?)\1([a-z]*);?\s*$| ) {
+ my ( $delim, $op, $np, $flags ) = ( $1, $2, $3, $4 );
+
+ if ( $flags !~ /^(g)?$/ ) {
+ &::notice( $who, "error: Invalid flags to regex." );
+ return;
+ }
+
+ ### TODO: use m### to make code safe!
+ # TODO: make code safer.
+ my $done = 0;
+
+ # TODO: use eval to deal with flags easily.
+ if ( $flags eq '' ) {
+ $done++ if ( !$done and $mod_news =~ s/\Q$op\E/$np/ );
+ $done++ if ( !$done and $mod_nnews =~ s/\Q$op\E/$np/ );
+ }
+ elsif ( $flags eq 'g' ) {
+ $done++ if ( $mod_news =~ s/\Q$op\E/$np/g );
+ $done++ if ( $mod_nnews =~ s/\Q$op\E/$np/g );
+ }
+
+ if ( !$done ) {
+ &::notice( $who, "warning: regex not found in news." );
+ return;
+ }
+
+ if ( $mod_news ne $news ) { # news item.
+ if ( exists $::news{$chan}{$mod_news} ) {
+ &::notice( $who, "item '$mod_news' already exists." );
+ return;
+ }
+
+ &::notice( $who,
+ "Moving item '$news' to '$mod_news' with SAR s/$op/$np/." );
+ foreach ( keys %{ $::news{$chan}{$news} } ) {
+ $::news{$chan}{$mod_news}{$_} = $::news{$chan}{$news}{$_};
+ delete $::news{$chan}{$news}{$_};
+ }
+
+ # needed?
+ delete $::news{$chan}{$news};
+ }
+
+ if ( $mod_nnews ne $nnews ) { # news Text/Description.
+ &::notice( $who, "Changing text for '$news' SAR s/$op/$np/." );
+ if ( $mod_news ne $news ) {
+ $::news{$chan}{$mod_news}{Text} = $mod_nnews;
+ }
+ else {
+ $::news{$chan}{$news}{Text} = $mod_nnews;
+ }
+ }
+
+ return;
+ }
+ else {
+ &::notice( $who, "error: that regex failed ;(" );
+ return;
+ }
+
+ &::notice( $who, "error: Invalid regex. Try s/1/2/, s#3#4#..." );