.\" Automatically generated by Pod::Man 4.14 (Pod::Simple 3.42) .\" .\" Standard preamble: .\" ======================================================================== .de Sp \" Vertical space (when we can't use .PP) .if t .sp .5v .if n .sp .. .de Vb \" Begin verbatim text .ft CW .nf .ne \\$1 .. .de Ve \" End verbatim text .ft R .fi .. .\" Set up some character translations and predefined strings. \*(-- will .\" give an unbreakable dash, \*(PI will give pi, \*(L" will give a left .\" double quote, and \*(R" will give a right double quote. \*(C+ will .\" give a nicer C++. Capital omega is used to do unbreakable dashes and .\" therefore won't be available. \*(C` and \*(C' expand to `' in nroff, .\" nothing in troff, for use with C<>. .tr \(*W- .ds C+ C\v'-.1v'\h'-1p'\s-2+\h'-1p'+\s0\v'.1v'\h'-1p' .ie n \{\ . ds -- \(*W- . ds PI pi . if (\n(.H=4u)&(1m=24u) .ds -- \(*W\h'-12u'\(*W\h'-12u'-\" diablo 10 pitch . if (\n(.H=4u)&(1m=20u) .ds -- \(*W\h'-12u'\(*W\h'-8u'-\" diablo 12 pitch . ds L" "" . ds R" "" . ds C` "" . ds C' "" 'br\} .el\{\ . ds -- \|\(em\| . ds PI \(*p . ds L" `` . ds R" '' . ds C` . ds C' 'br\} .\" .\" Escape single quotes in literal strings from groff's Unicode transform. .ie \n(.g .ds Aq \(aq .el .ds Aq ' .\" .\" If the F register is >0, we'll generate index entries on stderr for .\" titles (.TH), headers (.SH), subsections (.SS), items (.Ip), and index .\" entries marked with X<> in POD. Of course, you'll have to process the .\" output yourself in some meaningful fashion. .\" .\" Avoid warning from groff about undefined register 'F'. .de IX .. .nr rF 0 .if \n(.g .if rF .nr rF 1 .if (\n(rF:(\n(.g==0)) \{\ . if \nF \{\ . de IX . tm Index:\\$1\t\\n%\t"\\$2" .. . if !\nF==2 \{\ . nr % 0 . nr F 2 . \} . \} .\} .rr rF .\" ======================================================================== .\" .IX Title "MediaWiki::DumpFile::Compat::Links 3pm" .TH MediaWiki::DumpFile::Compat::Links 3pm "2022-06-15" "perl v5.34.0" "User Contributed Perl Documentation" .\" For nroff, turn off justification. Always turn off hyphenation; it makes .\" way too many mistakes in technical documents. .if n .ad l .nh .SH "NAME" Parse::MediaWikiDump::Links \- Object capable of processing link dump files .SH "ABOUT" .IX Header "ABOUT" This object is used to access content of the \s-1SQL\s0 based category dump files by providing an iterative interface for extracting the individual article links to the same. Objects returned are an instance of Parse::MediaWikiDump::link. .SH "SYNOPSIS" .IX Header "SYNOPSIS" .Vb 1 \& use MediaWiki::DumpFile::Compat; \& \& $pmwd = Parse::MediaWikiDump\->new; \& $links = $pmwd\->links(\*(Aqpagelinks.sql\*(Aq); \& $links = $pmwd\->links(\e*FILEHANDLE); \& \& #print the links between articles \& while(defined($link = $links\->next)) { \& print \*(Aqfrom \*(Aq, $link\->from, \*(Aq to \*(Aq, $link\->namespace, \*(Aq:\*(Aq, $link\->to, "\en"; \& } .Ve .SH "METHODS" .IX Header "METHODS" .IP "Parse::MediaWikiDump::Links\->new" 4 .IX Item "Parse::MediaWikiDump::Links->new" Create a new instance of a page links dump file parser .ie n .IP "$links\->next" 4 .el .IP "\f(CW$links\fR\->next" 4 .IX Item "$links->next" Return the next available Parse::MediaWikiDump::link object or undef if there is no more data left .SH "EXAMPLE" .IX Header "EXAMPLE" .SS "List all links between articles in a friendly way" .IX Subsection "List all links between articles in a friendly way" .Vb 1 \& #!/usr/bin/perl \& \& use strict; \& use warnings; \& \& use MediaWiki::DumpFile::Compat; \& \& my $pmwd = Parse::MediaWikiDump\->new; \& my $links = $pmwd\->links(shift) or die "must specify a pagelinks dump file"; \& my $dump = $pmwd\->pages(shift) or die "must specify an article dump file"; \& my %id_to_namespace; \& my %id_to_pagename; \& \& binmode(STDOUT, \*(Aq:utf8\*(Aq); \& \& #build a map between namespace ids to namespace names \& foreach (@{$dump\->namespaces}) { \& my $id = $_\->[0]; \& my $name = $_\->[1]; \& \& $id_to_namespace{$id} = $name; \& } \& \& #build a map between article ids and article titles \& while(my $page = $dump\->next) { \& my $id = $page\->id; \& my $title = $page\->title; \& \& $id_to_pagename{$id} = $title; \& } \& \& $dump = undef; #cleanup since we don\*(Aqt need it anymore \& \& while(my $link = $links\->next) { \& my $namespace = $link\->namespace; \& my $from = $link\->from; \& my $to = $link\->to; \& my $namespace_name = $id_to_namespace{$namespace}; \& my $fully_qualified; \& my $from_name = $id_to_pagename{$from}; \& \& if ($namespace_name eq \*(Aq\*(Aq) { \& #default namespace \& $fully_qualified = $to; \& } else { \& $fully_qualified = "$namespace_name:$to"; \& } \& \& print "Article \e"$from_name\e" links to \e"$fully_qualified\e"\en"; \& } .Ve