📄 apr::table.3
字号:
.Ve.Spand table \f(CW$add\fR:.Sp.Vb 1\& foo => "three".Ve.Spwhich is done by:.Sp.Vb 3\& use APR::Const \-compile => \*(Aq:table\*(Aq;\& my $base = APR::Table::make($r\->pool, TABLE_SIZE);\& my $add = APR::Table::make($r\->pool, TABLE_SIZE);\& \& $base\->set(bar => \*(Aqbeer\*(Aq);\& $base\->set(foo => \*(Aqone\*(Aq);\& $base\->add(foo => \*(Aqtwo\*(Aq);\& \& $add\->set(foo => \*(Aqthree\*(Aq);.Ve.SpNow overlap using \f(CW\*(C`APR::Const::OVERLAP_TABLES_SET\*(C'\fR:.Sp.Vb 1\& $base\->overlap($add, APR::Const::OVERLAP_TABLES_SET);.Ve.SpNow table \f(CW$add\fR is unmodified and table \f(CW$base\fR contains:.Sp.Vb 2\& foo => "three"\& bar => "beer".Ve.SpThe value from table \f(CW\*(C`add\*(C'\fR has overwritten all previous values forthe same key both had (\fIfoo\fR). This is the same as doing\&\f(CW\*(C`overlay()\*(C'\fR followed by \f(CW\*(C`compress()\*(C'\fRwith \f(CW\*(C`APR::Const::OVERLAP_TABLES_SET\*(C'\fR..IP "\(bu" 4\&\f(CW\*(C`APR::Const::OVERLAP_TABLES_MERGE\*(C'\fR.SpStart with table \f(CW$base\fR:.Sp.Vb 2\& foo => "one"\& foo => "two".Ve.Spand table \f(CW$add\fR:.Sp.Vb 2\& foo => "three"\& bar => "beer".Ve.Spwhich is done by:.Sp.Vb 3\& use APR::Const \-compile => \*(Aq:table\*(Aq;\& my $base = APR::Table::make($r\->pool, TABLE_SIZE);\& my $add = APR::Table::make($r\->pool, TABLE_SIZE);\& \& $base\->set(foo => \*(Aqone\*(Aq);\& $base\->add(foo => \*(Aqtwo\*(Aq);\& \& $add\->set(foo => \*(Aqthree\*(Aq);\& $add\->set(bar => \*(Aqbeer\*(Aq);.Ve.SpNow overlap using \f(CW\*(C`APR::Const::OVERLAP_TABLES_MERGE\*(C'\fR:.Sp.Vb 1\& $base\->overlap($add, APR::Const::OVERLAP_TABLES_MERGE);.Ve.SpNow table \f(CW$add\fR is unmodified and table \f(CW$base\fR contains:.Sp.Vb 2\& foo => "one, two, three"\& bar => "beer".Ve.SpValues from both tables for the same key were merged into onevalue. This is the same as doing \f(CW\*(C`overlay()\*(C'\fR followedby \f(CW\*(C`compress()\*(C'\fR with \f(CW\*(C`APR::Const::OVERLAP_TABLES_MERGE\*(C'\fR..ie n .Sh """overlay""".el .Sh "\f(CWoverlay\fP".IX Subsection "overlay"Merge two tables into one new table. The resulting table may have morethan one value for the same key..PP.Vb 1\& $table = $table_base\->overlay($table_overlay, $p);.Ve.ie n .IP "obj: $table_base\fR ( \f(CW""APR::Table object"" )" 4.el .IP "obj: \f(CW$table_base\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "obj: $table_base ( APR::Table object )"The table to add at the end of the new table..ie n .IP "arg1: $table_overlay\fR ( \f(CW""APR::Table object"" )" 4.el .IP "arg1: \f(CW$table_overlay\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "arg1: $table_overlay ( APR::Table object )"The first table to put in the new table..ie n .IP "arg2: $p\fR ( \f(CW""APR::Pool object"" )" 4.el .IP "arg2: \f(CW$p\fR ( \f(CWAPR::Pool object\fR )" 4.IX Item "arg2: $p ( APR::Pool object )"The pool to use for the new table..ie n .IP "ret: $table\fR ( \f(CW""APR::Table object"" )" 4.el .IP "ret: \f(CW$table\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "ret: $table ( APR::Table object )"A new table containing all of the data from the two passed in..IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PPExamples:.IP "\(bu" 4Start with table \f(CW$base\fR:.Sp.Vb 3\& foo => "one"\& foo => "two"\& bar => "beer".Ve.Spand table \f(CW$add\fR:.Sp.Vb 1\& foo => "three".Ve.Spwhich is done by:.Sp.Vb 3\& use APR::Const \-compile => \*(Aq:table\*(Aq;\& my $base = APR::Table::make($r\->pool, TABLE_SIZE);\& my $add = APR::Table::make($r\->pool, TABLE_SIZE);\& \& $base\->set(bar => \*(Aqbeer\*(Aq);\& $base\->set(foo => \*(Aqone\*(Aq);\& $base\->add(foo => \*(Aqtwo\*(Aq);\& \& $add\->set(foo => \*(Aqthree\*(Aq);.Ve.SpNow overlay using \f(CW\*(C`APR::Const::OVERLAP_TABLES_SET\*(C'\fR:.Sp.Vb 1\& my $overlay = $base\->overlay($add, APR::Const::OVERLAP_TABLES_SET);.Ve.SpThat resulted in a new table \f(CW$overlay\fR (tables \f(CW\*(C`add\*(C'\fR and \f(CW$base\fRare unmodified) which contains:.Sp.Vb 4\& foo => "one"\& foo => "two"\& foo => "three"\& bar => "beer".Ve.ie n .Sh """set""".el .Sh "\f(CWset\fP".IX Subsection "set"Add a key/value pair to a table, if another element already existswith the same key, this will over-write the old data..PP.Vb 1\& $table\->set($key, $val);.Ve.ie n .IP "obj: $table\fR ( \f(CW""APR::Table object"" )" 4.el .IP "obj: \f(CW$table\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "obj: $table ( APR::Table object )"The table to add the data to..ie n .IP "arg1: $key ( string )" 4.el .IP "arg1: \f(CW$key\fR ( string )" 4.IX Item "arg1: $key ( string )"The key to use..ie n .IP "arg2: $val ( string )" 4.el .IP "arg2: \f(CW$val\fR ( string )" 4.IX Item "arg2: $val ( string )"The value to add..IP "ret: no return value" 4.IX Item "ret: no return value".PD 0.IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PD.PPWhen adding data, this function makes a copy of both the key and thevalue..ie n .Sh """unset""".el .Sh "\f(CWunset\fP".IX Subsection "unset"Remove data from the table..PP.Vb 1\& $table\->unset($key);.Ve.ie n .IP "obj: $table\fR ( \f(CW""APR::Table object"" )" 4.el .IP "obj: \f(CW$table\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "obj: $table ( APR::Table object )"The table to remove data from..ie n .IP "arg1: $key ( string )" 4.el .IP "arg1: \f(CW$key\fR ( string )" 4.IX Item "arg1: $key ( string )"The key of the data being removed..IP "ret: no return value" 4.IX Item "ret: no return value".PD 0.IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PD.SH "TIE Interface".IX Header "TIE Interface"\&\f(CW\*(C`APR::Table\*(C'\fR also implements a tied interface, so you can work with the\&\f(CW$table\fR object as a hash reference..PPThe following tied-hash function are supported: \f(CW\*(C`FETCH\*(C'\fR, \f(CW\*(C`STORE\*(C'\fR,\&\f(CW\*(C`DELETE\*(C'\fR, \f(CW\*(C`CLEAR\*(C'\fR, \f(CW\*(C`EXISTS\*(C'\fR, \f(CW\*(C`FIRSTKEY\*(C'\fR, \f(CW\*(C`NEXTKEY\*(C'\fR and\&\f(CW\*(C`DESTROY\*(C'\fR..PPNote regarding the use of \f(CW\*(C`values()\*(C'\fR. \f(CW\*(C`APR::Table\*(C'\fR can hold morethan one key-value pair sharing the same key, so when using a tablethrough the tied interface, the first entry found with the right keywill be used, completely disregarding possible other entries with thesame key. With Perl 5.8.0 and higher \f(CW\*(C`values()\*(C'\fR will correctly listvalues the corresponding to the list generated by \f(CW\*(C`keys()\*(C'\fR. Thatdoesn't work with Perl 5.6. Therefore to portably iterate over thekey-value pairs, use \f(CW\*(C`each()\*(C'\fR (which fully supports multivaluedkeys), or \f(CW\*(C`APR::Table::do\*(C'\fR..ie n .Sh """EXISTS""".el .Sh "\f(CWEXISTS\fP".IX Subsection "EXISTS".Vb 1\& $ret = $table\->EXISTS($key);.Ve.ie n .IP "obj: $table\fR ( \f(CW""APR::Table object"" )" 4.el .IP "obj: \f(CW$table\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "obj: $table ( APR::Table object )".PD 0.ie n .IP "arg1: $key ( string )" 4.el .IP "arg1: \f(CW$key\fR ( string )" 4.IX Item "arg1: $key ( string )".ie n .IP "ret: $ret ( integer )" 4.el .IP "ret: \f(CW$ret\fR ( integer )" 4.IX Item "ret: $ret ( integer )".PDtrue or false.IP "since: 2.0.00" 4.IX Item "since: 2.0.00".ie n .Sh """CLEAR""".el .Sh "\f(CWCLEAR\fP".IX Subsection "CLEAR".Vb 1\& $table\->CLEAR();.Ve.ie n .IP "obj: $table\fR ( \f(CW""APR::Table object"" )" 4.el .IP "obj: \f(CW$table\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "obj: $table ( APR::Table object )".PD 0.IP "ret: no return value" 4.IX Item "ret: no return value".IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PD.ie n .Sh """STORE""".el .Sh "\f(CWSTORE\fP".IX Subsection "STORE".Vb 1\& $table\->STORE($key, $val);.Ve.ie n .IP "obj: $table\fR ( \f(CW""APR::Table object"" )" 4.el .IP "obj: \f(CW$table\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "obj: $table ( APR::Table object )".PD 0.ie n .IP "arg1: $key ( string )" 4.el .IP "arg1: \f(CW$key\fR ( string )" 4.IX Item "arg1: $key ( string )".ie n .IP "arg2: $val ( string )" 4.el .IP "arg2: \f(CW$val\fR ( string )" 4.IX Item "arg2: $val ( string )".IP "ret: no return value" 4.IX Item "ret: no return value".IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PD.ie n .Sh """DELETE""".el .Sh "\f(CWDELETE\fP".IX Subsection "DELETE".Vb 1\& $table\->DELETE($key);.Ve.ie n .IP "obj: $table\fR ( \f(CW""APR::Table object"" )" 4.el .IP "obj: \f(CW$table\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "obj: $table ( APR::Table object )".PD 0.ie n .IP "arg1: $key ( string )" 4.el .IP "arg1: \f(CW$key\fR ( string )" 4.IX Item "arg1: $key ( string )".IP "ret: no return value" 4.IX Item "ret: no return value".IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PD.ie n .Sh """FETCH""".el .Sh "\f(CWFETCH\fP".IX Subsection "FETCH".Vb 1\& $ret = $table\->FETCH($key);.Ve.ie n .IP "obj: $table\fR ( \f(CW""APR::Table object"" )" 4.el .IP "obj: \f(CW$table\fR ( \f(CWAPR::Table object\fR )" 4.IX Item "obj: $table ( APR::Table object )".PD 0.ie n .IP "arg1: $key ( string )" 4.el .IP "arg1: \f(CW$key\fR ( string )" 4.IX Item "arg1: $key ( string )".ie n .IP "ret: $ret ( string )" 4.el .IP "ret: \f(CW$ret\fR ( string )" 4.IX Item "ret: $ret ( string )".IP "since: 2.0.00" 4.IX Item "since: 2.0.00".PD.PPWhen iterating through the table's entries with \f(CW\*(C`each()\*(C'\fR, \f(CW\*(C`FETCH\*(C'\fRwill return the current value of a multivalued key. For example:.PP.Vb 3\& $table\->add("a" => 1);\& $table\->add("b" => 2);\& $table\->add("a" => 3);\& \& ($k, $v) = each %$table; # (a, 1)\& print $table\->{a}; # prints 1\& \& ($k, $v) = each %$table; # (b, 2)\& print $table\->{a}; # prints 1\& \& ($k, $v) = each %$table; # (a, 3)\& print $table\->{a}; # prints 3 !!!\& \& ($k, $v) = each %$table; # (undef, undef)\& print $table\->{a}; # prints 1.Ve.SH "See Also".IX Header "See Also"mod_perl 2.0 documentation..SH "Copyright".IX Header "Copyright"mod_perl 2.0 and its core modules are copyrighted underThe Apache Software License, Version 2.0..SH "Authors".IX Header "Authors"The mod_perl development team and numerouscontributors.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -