Johannes Sixt <j...@kdbg.org> writes:

> Am 31.08.2012 16:09, schrieb Marco Stornelli:
>> +CCS=`perl -e 'local $/=undef; open FILE, $ENV{'PATCHTMP'}; $text=<FILE>;
>> +close FILE; $addr = $1 if $text =~ /Cc: (.*?(,\n .*?)*)\n/s; $addr =~ 
>> s/\n//g;
>> +print $addr;'`
>
> The quoting is broken in this line (sq within sq does not work).

As you said later in the thread, perl lets you be loose and say
$ENV{PATCHTMP} without quoting the string "PATCHTMP", so it is not
quite _broken_ per-se, but the above gives a false impression to
readers that the author meant to feed perl

    open FILE, $ENV{'PATCHTMP'};

which is not happening, so at least it is misleading.

> Am I correct that you intend to treat continuation lines with this
> non-trivial perl script?

As the above regexp seems to try to match

        Cc: marco, git,
          j6t, other recipient

I think that indeed is the intent.

> All this processing gets tedious and
> unreadable. Let me suggest this pattern instead:
>
> # translate to Thunderbird language
> LANG_TO="To:"
> LANG_SUBJ="Subject:"
> LANG_CC="Cc:"
>
> LF=   # terminates the _previous_ line
> while read -r line
> do
>       case $line in
>       'To: '*)
>               printf "${LF}%s" "$LANG_TO ${line#To: }"
>               ;;
>       'Cc: '*) ...similar...
>       'Subject: '*) ...similar...
>       ' '*)   # continuation line
>               printf "%s" "$line"
>               ;;
>       '')
>               print "${LF}\n"
>               cat
>               ;;
>       esac
>       LF='\n'
> done <"$PATCH" >"$1"

I think that is much more readable.
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to