Portál AbcLinuxu, 12. května 2025 07:59

Dotaz: Perl - Split

7.1.2011 16:26 Psp.2010
Perl - Split
Přečteno: 496×
Odpovědět | Admin

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:


Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

7.1.2011 17:09 chochi | skóre: 29 | Praha
Rozbalit Rozbalit vše Re: Perl - Split
Odpovědět | | Sbalit | Link | Blokovat | Admin
Trochu zlepsit vyraz, podle ktereho se splituje, napr (odstrani vsechny mazery, @, %, +):

$ 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'
        ];
7.1.2011 17:12 Psp.2010
Rozbalit Rozbalit vše Re: Perl - Split
Ano, tak rekneme ze ty NICKY se každou chvily meni..Jak znaky tak nicky..ale ano, zkusim to.
7.1.2011 17:17 Psp.2010
Rozbalit Rozbalit vše Re: Perl - Split

Ted mi to vypisuje todlecto:

$VAR1 = [ '1' ];

wamba avatar 7.1.2011 19:39 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Perl - Split
Odpovědět | | Sbalit | Link | Blokovat | Admin
mohl by jste napsat co ten program má dělat nějak podrobněji, popř. ke každému příkazu (řádku) napsat co by měl dělat? předpokládám, že s Perl-em začínáte nebo je to hodně "cool" kód? např. tohle
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 :)
This would have been so hard to fix when you don't know that there is in fact an easy fix.
7.1.2011 22:18 Psp.2010
Rozbalit Rozbalit vše Re: Perl - Split
Co by to mělo umět? Vytáhnout kdo je lidí na chatu (konkrétně na Lide.cz kde se IRC používá Lidegw.py) .A já po tom chci, aby mi je vytáhl (což je), a po té zkontroloval zda je někdo na blacklistu pomocí tim že rozsekám @list.Takže bych tim měl každýho uživatele na jenom řádku.O to mi jde.A abych se tam zbavil těch %, @ a +.
wamba avatar 7.1.2011 23:38 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Perl - Split
no to je sice hezky, ale když nám neřeknete co vrací $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á.

This would have been so hard to fix when you don't know that there is in fact an easy fix.
7.1.2011 23:47 Psp.2010
Rozbalit Rozbalit vše Re: Perl - Split
@list je pole není omezeno počtem lidí args je mistnost kde se ti lidi nacházejí a já chci kontrolu těch lidí tam jsou, aby byli vypsány každý na jeden řádek.
Řešení 1× (Psp.2010 (tazatel))
wamba avatar 8.1.2011 00:43 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Perl - Split
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;
This would have been so hard to fix when you don't know that there is in fact an easy fix.
8.1.2011 00:52 Psp.2010
Rozbalit Rozbalit vše Re: Perl - Split
Ano, to by šlo :) ale v 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.
wamba avatar 8.1.2011 01:10 wamba | skóre: 38 | blog: wamba
Rozbalit Rozbalit vše Re: Perl - Split
jen příklad, to můžete nahradit tím vaším
my @list = $event->args;
nebo něčím podobným
This would have been so hard to fix when you don't know that there is in fact an easy fix.
8.1.2011 01:17 Psp.2010
Rozbalit Rozbalit vše Re: Perl - Split
Skoro funkčí, děkuji :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.