The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

̾¾Î

PogoLink - Pogo¥Ç¡¼¥¿¥Ù¡¼¥¹Ãæ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁÐÊý¸þ´Ø·¸¤ò¼Â¸½¤¹¤ë¥¯¥é¥¹

³µÍ×

  use PogoLink;
  # ´Ø·¸¤ÎÄêµÁ
  package Person;
  sub new {
      my($class, $pogo, $name) = @_;
      # Make a hash ref persistent by $pogo and blessed by $class
      my $self = new_tie Pogo::Hash 8, $pogo, $class;
      %$self = (
          NAME     => $name,
          FATHER   => new PogoLink::Scalar($self, 'Man',    'CHILDREN'),
          MOTHER   => new PogoLink::Scalar($self, 'Woman',  'CHILDREN'),
          FRIENDS  => new PogoLink::Btree ($self, 'Person', 'FRIENDS', 'NAME'),
      );
      $self;
  }
  package Man;
  @ISA = qw(Person);
  sub new {
      my($class, $pogo, $name) = @_;
      my $self = $class->SUPER::new($pogo, $name);
      $self->{CHILDREN} = new PogoLink::Array ($self, 'Person', 'FATHER');
      $self->{WIFE}     = new PogoLink::Scalar($self, 'Woman',  'HUS');
      $self;
  }
  package Woman;
  @ISA = qw(Person);
  sub new {
      my($class, $pogo, $name) = @_;
      my $self = $class->SUPER::new($pogo, $name);
      $self->{CHILDREN} = new PogoLink::Array ($self, 'Person', 'MOTHER');
      $self->{HUS}      = new PogoLink::Scalar($self, 'Man',    'WIFE');
      $self;
  }

  # ´Ø·¸¤Î»ÈÍÑ
  $Pogo = new Pogo 'sample.cfg';
  $Dad = new Man   $Pogo, 'Dad';
  $Mom = new Woman $Pogo, 'Mom';
  $Jr  = new Man   $Pogo, 'Jr';
  $Gal = new Woman $Pogo, 'Gal';
  # ·ëº§
  $Dad->{WIFE}->add($Mom);     # $Mom->{HUS} ¤Ï¼«Æ°Åª¤Ë $Dad ¤ò»Ø¤¹
  # ÃÂÀ¸
  $Dad->{CHILDREN}->add($Jr);  # $Jr->{FATHER} ¤Ï¼«Æ°Åª¤Ë $Dad ¤ò»Ø¤¹
  $Mom->{CHILDREN}->add($Jr);  # $Jr->{MOTHER} ¤Ï¼«Æ°Åª¤Ë $Mom ¤ò»Ø¤¹
  # Jr¤Ëͧ㤬¤Ç¤­¤ë
  $Jr->{FRIENDS}->add($Gal);   # $Gal->{FRIENDS} ¤Ï¼«Æ°Åª¤Ë $Jr ¤ò»Ø¤¹
  # ¤ª¤Ã¤È¡¢Gal¤¬Dad¤ò¥²¥Ã¥È¤·¤Á¤ã¤Ã¤¿
  $Gal->{HUS}->add($Dad);      # $Dad->{WIFE} ¤Ï¼«Æ°Åª¤Ë $Gal ¤ò»Ø¤¹
                               # $Mom->{HUS} ¤Ï¼«Æ°Åª¤Ë $Dad ¤ò»Ø¤µ¤Ê¤¯¤Ê¤ë

²òÀâ

PogoLink ¤Ï¡¢°ìÂа졢°ìÂп¡¢Â¿Âп¤ÎÁÐÊý¸þ´Ø·¸¤ò¡¢Pogo ¥Ç¡¼¥¿¥Ù¡¼¥¹Ãæ ¤Î¥ª¥Ö¥¸¥§¥¯¥È´Ö¤Ëºî¤ê¤Þ¤¹¡£¤½¤Î´Ø·¸¤Ï¡¢¤ª¸ß¤¤¤òÀµ¤·¤¯»Ø¤¹¤è¤¦¤Ë¡¢¼«Æ° Ū¤ËÊݤ¿¤ì¤Þ¤¹¡£´Ø·¸¤Î¿ü¤òºî¤ë¤Î¤Ë¡¢Pogo::Array, Pogo::Hash, Pogo:: Htree, Pogo::Btree, Pogo::Ntree ¤Î¤É¤ì¤«¤òÁª¤Ù¤Þ¤¹¡£

¥¯¥é¥¹

PogoLink::Scalar

°ìÂаì¤ä°ìÂп´Ø·¸¤Î°ìü¤òºî¤ê¤Þ¤¹¡£

PogoLink::Array

°ìÂп¤ä¿Âп´Ø·¸¤Î¿ü¤ò¡¢ÇÛÎó¤È¤·¤Æºî¤ê¤Þ¤¹¡£Pogo::Array ¤¬»È¤ï¤ì¤Þ ¤¹¡£

PogoLink::Hash, PogoLink::Htree, PogoLink::Btree, PogoLink::Ntree

¤³¤ì¤é¤Î¥¯¥é¥¹¤Ï¡¢Â¿Ã¼¤ò¥Ï¥Ã¥·¥å¤È¤·¤Æºî¤ê¤Þ¤¹¡£¤½¤ì¤¾¤ìÂбþ¤·¤¿ Pogo: :*¤¬»È¤ï¤ì¤Þ¤¹¡£

¥á¥½¥Ã¥É

new PogoLink::* $selfobject, $linkclass, $invattr, $keyattr

¥³¥ó¥¹¥È¥é¥¯¥¿¡£¥¯¥é¥¹¥á¥½¥Ã¥É¡£$selfobject ¤Ï¤³¤Î´Ø·¸¤ò»ý¤Ä¥Ç¡¼¥¿¥Ù¡¼ ¥¹Ãæ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤¹¡£¥Ï¥Ã¥·¥å»²¾È¤È¤·¤Æ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ê¤±¤ì¤Ð¤Ê¤ê ¤Þ¤»¤ó¡£$linkclass ¤Ï¤³¤Î´Ø·¸¤¬»Ø¤¹Áê¼ê¥ª¥Ö¥¸¥§¥¯¥È¤Î¥¯¥é¥¹Ì¾¤Ç¤¹¡£¾Ê ά¤¹¤ë¤È¡¢¤É¤ó¤Ê¥¯¥é¥¹¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤âµö¤µ¤ì¤Þ¤¹¡£$invattr ¤Ï¤³¤Î´Ø ·¸¤ÎÁê¼ê¥ª¥Ö¥¸¥§¥¯¥È¤Î°À­Ì¾¡Ê¥Ï¥Ã¥·¥å¥­¡¼¡Ë¤Ç¡¢¤½¤Î°À­¤¬µÕ¤ËÁê¼ê¤«¤é ¤³¤Á¤é¤ò»Ø¤¹¤³¤È¤Ë¤Ê¤ê¤Þ¤¹¡£$keyattr ¤Ï¡¢PogoLink::Hash, PogoLink:: Htree, PogoLink::Btree, PogoLink::Ntree ¤Ë¤Ä¤¤¤Æ¤À¤±É¬Íפǡ¢¤³¤Î´Ø·¸¤Î Áê¼ê¥ª¥Ö¥¸¥§¥¯¥È¤Î°À­Ì¾¡Ê¥Ï¥Ã¥·¥å¥­¡¼¡Ë¤Ç¡¢¤½¤Î°À­Ãͤ¬¥Ï¥Ã¥·¥å¥­¡¼¤È ¤·¤Æ»È¤ï¤ì¤Þ¤¹¡£

Ãí°Õ¡§PogoLink::*¥³¥ó¥¹¥È¥é¥¯¥¿¤ò¡¢¥¯¥é¥¹¤Î¥³¥ó¥¹¥È¥é¥¯¥¿¤ÎÃæ¤Ç¼¡¤Î¤è ¤¦¤Ë»È¤¦¤³¤È¤Ï¤Ç¤­¤Þ¤»¤ó¡£

  sub new {
      my($class) = @_;
      my $self = {};
      bless $self, $class;
      $self->{FOO} = new PogoLink::Scalar $self, 'Foo', 'BAR';
      $self;
  }

¤Ê¤¼¤Ê¤é¡¢PogoLink::*¥³¥ó¥¹¥È¥é¥¯¥¿¤Î°ú¿ô¤È¤Ê¤ë¤½¤Î¥ª¥Ö¥¸¥§¥¯¥È¼«¿È¤Ï¡¢ ¥Ç¡¼¥¿¥Ù¡¼¥¹Ãæ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤«¤é¤Ç¤¹¡£¤³¤ÎÎã¤Ç¤Ï¡¢ $self ¤Ï¤Þ¤À¥á¥â¥ê¾å¤Ë¤¢¤ë¤À¤±¤Ç¤¹¡£Àµ¤·¤¯¤Ï¼¡¤Î¤è¤¦¤Ë¤·¤Þ¤¹¡£

  sub new {
      my($class, $pogo) = @_;
      my $self = new_tie Pogo::Hash 8, $pogo, $class;
      $self->{FOO} = new PogoLink::Scalar $self, 'Foo', 'BAR';
      $self;
  }

Pogo ¥ª¥Ö¥¸¥§¥¯¥È¤È¥¯¥é¥¹Ì¾¤ò°ú¿ô¤È¤·¤¿ new_tie ¤ò»È¤¨¤Ð¡¢¥Ç¡¼¥¿¥Ù¡¼¥¹ ¤Ë³ÊǼ¤µ¤ì¡¢bless ¤µ¤ì¤¿»²¾È¤¬ÆÀ¤é¤ì¤ë¤Î¤Ç¤¹¡£

get $idx_or_key

´Ø·¸¤ÎÁê¼ê¥ª¥Ö¥¸¥§¥¯¥È¤òÊÖ¤·¤Þ¤¹¡£PogoLink::Scalar ¤Ç¤Ï $idx_or_key ¤Ï ÉÔÍפǤ¹¡£PogoLink::Array ¤Ç¤Ï¡¢$idx_or_key ¤ÏÇÛÎó¤Îź»úÈÖ¹æ¤Ç¤¹¡£¤½¤Î ¾¤Î¾ì¹ç¤Ï¡¢$idx_or_key ¤Ï¥Ï¥Ã¥·¥å¥­¡¼¤Ç¤¹¡£

getlist

´Ø·¸¤ÎÁê¼ê¥ª¥Ö¥¸¥§¥¯¥È¤Î¥ê¥¹¥È¤òÊÖ¤·¤Þ¤¹¡£

getkeylist

´Ø·¸¤ÎÁê¼ê¤Î¥ê¥¹¥È¤ò¡¢¥Ï¥Ã¥·¥å¤Î¥­¡¼¤Î¥ê¥¹¥È¤È¤·¤ÆÊÖ¤·¤Þ¤¹¡£PogoLink:: Hash, PogoLink::Htree, PogoLink::Btree, PogoLink::Ntree ¤Ë¤Ä¤¤¤Æ¤À¤±Í­ ¸ú¤Ê¥á¥½¥Ã¥É¤Ç¤¹¡£

find $object

´Ø·¸¤ÎÁê¼ê¤Ë$object¤¬¤¢¤ë¤«Ä´¤Ù¤Þ¤¹¡£¤¢¤ì¤Ð¿¿¤òÊÖ¤·¤Þ¤¹¡£

clear

´Ø·¸¤ÎÁ´¤Æ¤ÎÁê¼ê¥ª¥Ö¥¸¥§¥¯¥È¤Ø¤Î´Ø·¸¤òÃǤÁ¤Þ¤¹¡£

del $object

$object¤Ø¤Î´Ø·¸¤òÃǤÁ¤Þ¤¹¡£

add $object

$object¤Ø¤Î´Ø·¸¤òÄɲä·¤Þ¤¹¡£

ºî¼Ô

ÃæÅç¡¡Ì÷ <sey@jkc.co.jp>

»²¾È

Pogo(3). sample/person.pl.

5 POD Errors

The following errors were encountered while parsing the POD:

Around line 1:

Non-ASCII character seen before =encoding in '̾¾Î'. Assuming CP1252

Around line 67:

You forgot a '=back' before '=head2'

Around line 69:

'=item' outside of any '=over'

Around line 83:

You forgot a '=back' before '=head2'

Around line 85:

'=item' outside of any '=over'