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

NAME

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

SYNOPSIS

  use PogoLink;
  # ´Ø·¸¤ÎÄêµÁ
  package Person;
  sub new {
      my($class, $name) = @_;
      my $self = new_tie Pogo::Hash 8, undef, $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 ¤ò»Ø¤µ¤Ê¤¯¤Ê¤ë

DESCRIPTION

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, $invfield, $keyfield, $size

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

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

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

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

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

¥¯¥é¥¹Ì¾¤ò°ú¿ô¤È¤·¤¿ new_tie ¤ò»È¤¨¤Ð¡¢Pogo::*¥ª¥Ö¥¸¥§¥¯¥È¤Ë tie ¤µ¤ì ¤¿¥ª¥Ö¥¸¥§¥¯¥È¤¬ÆÀ¤é¤ì¤Þ¤¹¡£

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 ¤Ø¤Î´Ø·¸¤òºî¤ê¤Þ¤¹¡£$object ¤ÎµÕÍ×ÁÇ¡ÊÍ×ÁÇ̾¤Ï new()¤Ç»ØÄꤷ¤¿ $invfield¡Ë¤Ï¡¢PogoLink::* ¥ª¥Ö¥¸¥§¥¯¥È¤Ç¤Ê¤¯¤Æ¤Ï¤Ê¤ê¤Þ¤»¤ó¡£¤â¤·µÕÍ× ÁǤ¬Ì¤ÄêµÁ¤Ç¡¢$object ¤¬ INIT_ Í×ÁÇ̾ ¤È¤¤¤¦¥á¥½¥Ã¥É¤ò»ý¤Ã¤Æ¤¤¤ì¤Ð¡ÊÎã ¤¨¤ÐÍ×ÁÇ̾¤¬'FIELD'¤Ê¤é¥á¥½¥Ã¥É̾¤Ï'INIT_FIELD'¡Ë¡¢´Ø·¸¤òºî¤ëÁ°¤ËµÕÍ× ÁǤνé´ü²½¤Î¤¿¤á¤Ë $object->INIT_ Í×ÁÇ̾() ¤¬¸Æ¤Ð¤ì¤Þ¤¹¡£

AUTHOR

ÃæÅç¡¡Ì÷ <nakajia@netstock.co.jp>

SEE ALSO

Pogo(3). sample/person.pl.

5 POD Errors

The following errors were encountered while parsing the POD:

Around line 3:

Non-ASCII character seen before =encoding in 'Pogo¥Ç¡¼¥¿¥Ù¡¼¥¹Ãæ¤Î¥ª¥Ö¥¸¥§¥¯¥È¤ÎÁÐÊý¸þ´Ø·¸¤ò¼Â¸½¤¹¤ë¥¯¥é¥¹'. Assuming CP1252

Around line 66:

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

Around line 68:

'=item' outside of any '=over'

Around line 82:

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

Around line 84:

'=item' outside of any '=over'