Portál AbcLinuxu, 12. května 2025 07:59
Dobrý den. Mam dotaz jak pomocí splitu mam rozdělit "@list".Když v @list se skrývá: NICK @NICK NICK %NICK NICK NICK +NICK Viz kód:
my ($self, $event) = @_;
my (@list, $channel) = ($event->args);
($channel, @list) = splice @list, 2;
print "@list\n";
Otázka..Jak se split mam rozdělit každý nick na jeden řádek a odstranit znaky: @, +, % Zkoušel sem:
my $people;
my $people = split(/ /, @list);
ale bohužel marně..Nejaky navrh?
Řešení dotazu:
$ perl -e 'use Data::Dumper; $a = "NICK \@NICK NICK %NICK NICK NICK +NICK"; @l=split(/[\@%\+ ]+/, $a); print(Dumper(\@l));'
$VAR1 = [
'NICK',
'NICK',
'NICK',
'NICK',
'NICK',
'NICK',
'NICK'
];
Ted mi to vypisuje todlecto:
$VAR1 = [
'1'
];
my $people = split(/ /, @list);vezme počet prvků
@list
rozdělí to podle mezery a do $people
se uloží počet prvků vzniklého pole, tedy pravděpodobně vždy 1
, což pochybuji je to co chcete :)
$events->args
, tak to bude těžké.
zkusím odhadnout, že vrací pole, kde od 4,5,... prvek obsahuje postupně ty nicky, pak bych zkusil něco jako
my @people = map /(\w+)/, @list;ale celkově jsou to pro mě určité podivnosti např. tohle
my (@list, $channel) = ($event->args);by chtělo přinejmenším komentář, co to dělá.
use 5.10.1; use Data::Dumper; my @list = qw{NICK \@NICK NICK %NICK NICK NICK +NICK}; my @people = map /(\w+)/, @list; say Dumper( [\@list, \@people] ); say foreach @people;
my @list = qw{NICK \@NICK NICK %NICK NICK NICK +NICK};
de o to, že ty NICK nahrazují uživatele, který nejsou v přesnym pořadí jak je dáno.Vždycky se to může měnit.
my @list = $event->args;nebo něčím podobným
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.