Existe uma maneira melhor de escrever expressões regulares Perl com / x para que o código ainda seja fácil de le

Corri o Perl :: Critic em um dos meus scripts e recebi a seguinte mensagem:

Regular expression without "/x" flag at line 21, column 26. See page 236 of PBP.

Procurei as informações da políticaaqu, e entendo que escrever expressões regulares no modo estendido ajudará quem estiver olhando o códig

No entanto, eu estou preso como converter meu código para usar o sinalizador /

CPAN Exemplo:

# Match a single-quoted string efficiently...

m{'[^\\']*(?:\\.[^\\']*)*'};  #Huh?

# Same thing with extended format...

m{
    '           # an opening single quote
    [^\\']      # any non-special chars (i.e. not backslash or single quote)
    (?:         # then all of...
        \\ .    #    any explicitly backslashed char
        [^\\']* #    followed by an non-special chars
    )*          # ...repeated zero or more times
    '           # a closing single quote
}x;

Isso faz sentido se você apenas olhar para o regex.

My Code:

if ($line =~ /^\s*package\s+(\S+);/ ) {

Não sei exatamente como usar uma regex estendida dentro de uma instrução if. Eu posso escrever assim:

    if (
        $line =~ /
        ^\s*    # starting with zero or more spaces
        package
        \s+     # at least one space
        (\S+)   # capture any non-space characters
        ;       # ending in a semi-colon
        /x
      )
    {

E isso funciona, mas acho que isso é quase mais difícil de ler do que o original. Existe uma maneira melhor (ou melhor) de escrever isso? Eu acho que eu poderia criar uma variável usando qr //

Na verdade, não estou procurando conselhos sobre como reescrever esse regex específico (embora, se eu puder melhorá-lo, aceitarei conselhos) - estou procurando mais conselhos sobre como expandir um regex dentro de uma instrução if.

Sei que Perl :: Critic é apenas uma diretriz, mas seria bom segui-la.

Desde já, obrigado

EDITAR Então, depois de receber algumas respostas, ficou claro para mim que nem sempre é necessário fazer uma linha múltipla regex com comentários. As pessoas que entendem o regex básico devem entender o que meu exemplo estava fazendo - os comentários que adicionei foram talvez um pouco desnecessários e detalhados. Eu gosto da ideia de usar o sinalizador de regex estendido, mas ainda incorporar espaços no regex para tornar cada parte do regex um pouco mais clara. Obrigado por toda a entrada!

questionAnswers(10)

yourAnswerToTheQuestion