¿Cómo puedo unir el resultado de svnlook en Perl?

Estoy ejecutando SVN en un server de Windows, y estoy usando scripts de Perl para implementar algunos enlaces de precompromiso. Estoy viendo el siguiente post de error de TortoiseSVN:

Error !! ScriptError !! No se puede analizar la línea: _U ruta / a / files / troncal

y esta es la secuencia de commands:

foreach my $line (`$svnlook changed -t "$txn" "$repos"`) { chomp($line); if ($line !~ /([AUD]).\s\s(.+)$/) { print STDERR "!!Script Error!! Can't parse line: $line\n"; exit(1); } else { # perform some actions } } exit(0); 

Intenté replace la expresión regular con cosas como /_([AUD]).\s\s(.+)$/ sin éxito. Incluso probé /.*([AUD]).\s\s(.+)$/ .

¿Pensamientos? Sugerencias?

Sin echar un vistazo a la documentation de SVN, solo estoy adivinando: en el resultado anterior solo se muestra un espacio entre U y la ruta real, pero tiene \s\s en todas sus expresiones regulares.

[edit] Ok, ahora eché un vistazo a la reference de svnlook . En primer lugar, su expresión regular falla para las versiones actuales de svnlook, ya que el resultado se especifica de la siguiente manera:

  • Las primeras dos columnas contienen el estado
  • el path comienza en la quinta columna
  • El estado puede ser uno de A (agregado), U (contenido modificado), D (eliminado), _U (cambios de properties) y UU (contenido + properties modificadas)

Por lo tanto, debería poder coincidir con algo como ^([_AUD]+)\s+(.+)$ . Uno puede ser más específico, pero eso no es necesario.

Si esto no coincide, transmita la salida del command a un file y publique aquí la parte relevante.

if ($line !~ /^_?([AUD])\s+(.+)$/ debería funcionar bien.