in reply to How do I assign & substitute in one statement?

Predicate-for allows you to declare and modify a lexical in the same statement:
s[http://foo.bar.com/][] for (my $dirfilename = $url);
Using block-for does not put the lexical in the surrounding scope. This is an interesting difference, particularly since -MO=Deparse indicates that the above statement is translated into the block form.