Thread extract string
(17 answers)
Opened by Graf Herschel at 2012-09-25 14:12
Hi,
Code: (dl
)
$ perl -MURI -wle 'my $uri = URI->new("dvb://tv.mydomain.com:11300/rsat.ts"); print $uri->host;' Das läuft in einen Fehler, weil: URI lädt für die verschiedenen Schemata entsprechende Module nach; z.B. URI::http, URI::ftp oder URI::ldap. Für unbekannte Schemata (wie eben hier dvb) wird ein URI::_foreign benutzt, welches von URI::_generic erbt. Diese zwei stellen aber keine host-Methode bereit. Daher wird ein entsprechender Fehler generiert. Die host-Methode wird von URI::_server bereitgestellt. Nachdem mir einige unschöne und relativ "brutale" Varianten durch den Kopf gingen, kam ich nach einem Blick in die Doku auf folgende Variante: Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #! /usr/bin/perl use strict; use warnings; use URI; my $uri = URI->new("dvb://tv.mydomain.com:11300/rsat.ts"); if ( !$uri->can('host') ) { # treat it like a http scheme, save the old one my $scheme = $uri->scheme('http'); print $uri->host; # restore old scheme $uri->scheme($scheme); } __END__ Ob das so 100% sauber ist, sei mal dahin gestellt. Aber auf jeden Fall sauberer als das, was mir zwischenzeitlich durch den Kopf ging ;-) Last edited: 2012-09-25 18:02:38 +0200 (CEST) meine Beiträge: I.d.R. alle Angaben ohne Gewähr und auf Linux abgestimmt!
Die Sprache heisst Perl, nicht PERL. - Bitte Crossposts als solche kenntlich machen! |