Domanda

Esiste un modo più semplice per estrarre solo un elemento da una partita oltre a seguire:

my $date = ($xml_file =~ m/(\d+)-sys_char/)[0];
# or
my $date = $1 if $xml_file =~ /(\d+)-sys_char/;

Esiste un flag per specificare che m non restituisce un array ma solo un valore concatenato di tutte le corrispondenze $ #, quindi posso fare :?

my $date = ($xml_file =~ mSOMEOPT/(\d+)-sys_char/);

rimuovere lo 0 dalla fine?

È stato utile?

Soluzione

Desideri:

my ($date) = ($xml_file =~ m/(\d+)-sys_char/);

Questo ti porterà $ 1 in $ date . Per quanto riguarda la seconda parte della tua domanda, non c'è modo di ottenere tutte le corrispondenze numerate in una singola variabile, ma puoi inserirle tutte in un array come questo:

my @matches = ($xml_file =~ m/(\d+)-sys_char/);

Queste sono in realtà la stessa sintassi: quando il lato sinistro di una corrispondenza come questa è una matrice, viene restituita una matrice contenente tutte le sottomissioni. La prima versione trasforma ($ date) in un array a un elemento, eliminando il resto delle sotto-partite.

Altri suggerimenti

my ($date) = $xml_file =~ m/(\d+)-sys_char/;

if ( defined $date ) {

}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top