From: Junio C Hamano Date: Sun, 28 Mar 2021 01:41:54 GMT Subject: Re: [PATCH v4] gitweb: redacted e-mail addresses feature. Message-ID: In-Reply-To: <6f656f62497fb7c9322432b5eb151b86.squirrel@mail.kodaksys.org> "Georgios Kontaxis" writes: >> I'll defer to others who are more familiar with gitweb and Perl >> ecosystem if this is warranted, but I have a feeling that importing >> and using Mail::Address->parse() only because we want to see if a >> given "" is an address is a bit overkill and it might be >> sufficient to do something as crude as m/^<[^@>]+@[a-z0-9-.]+>$/i >> ... >>> + while ($line =~ m/(<[^>]+>)/g) { >>> + my $match = $1; >>> + if (!is_mailaddr($match)) { >>> + next; >>> + } >>> + my $offset = pos $line; >>> + my $head = substr $line, 0, $offset - length($match); >>> + my $redaction = ""; >>> + my $tail = substr $line, $offset; >>> + $line = $head . $redaction . $tail; >>> + pos $line = length($head) + length($redaction); >> >> Hmmmm, Perl suggestions from others? It looks quite strange to see >> that s/// operator is not used and replacement is done manually with >> byte position in a Perl script. >> > If there's a more elegant way to do the above we can certain do that instead. For example, if we do not insist on using overkill Mail::Address->parse(), we could do something silly like this: $line =~ s/<[^@>]+@[a-z0-9-.]+>//ig; no?