From: Ævar Arnfjörð Bjarmason Date: Mon, 04 Oct 2010 07:25:47 GMT Subject: Re: [PATCH] send-email: Don't leak To: headers between patches Message-ID: In-Reply-To: On Mon, Oct 4, 2010 at 07:15, Ævar Arnfjörð Bjarmason wrote: > On Mon, Oct 4, 2010 at 07:05, Stephen Boyd wrote: >> If the first patch in a series has a To: header in the file and the >> second patch in the series doesn't the address from the first patch will >> be part of the To: addresses in the second patch. Fix this by treating the >> to list like the cc list. Have an initial to list come from the command >> line, user input and config options. Then build up a to list from each >> patch and concatenate the two together before sending the patch. Finally, >> reset the list after sending each patch so the To: headers from a patch >> don't get used for the next one. > > Couldn't this whole thing be done by: > >>  # Variables we fill in automatically, or via prompting: >> -my (@to,$no_to,@cc,$no_cc,@initial_cc,@bcclist,$no_bcc,@xh, >> +my (@to,$no_to,@initial_to,@cc,$no_cc,@initial_cc,@bcclist,$no_bcc,@xh, > > Changing this to an "our" variable instead of a "my". > >>        my $body_encoding; >> +       @to = (); > > Then doing: > >    local @to = @to; > >> +       @to = (@initial_to, @to); >>        @cc = (@initial_cc, @cc); Small brainfart, you don't have to change it to an "our" and use "local", you can just use "my" in that for-loop: $ perl -E 'my @a = qw(a b); { my @a = (@a, "c"); say "@a" } say "@a"' a b c a b That's a much better solution IMO than the C-like usage of two variables. Lexical shadowing is exactly for this sort of thing.