sub MacroSubst { ... ### 다음라인 추가 $txt =~ s/\&__LT__;allpagesfrom\(([^,\n]+)(,\d)?\)\&__GT__;/&MacroAllPagesFrom($1, $2)/gei; ### return $txt; }
### 다음 함수를 통채로 추가 sub MacroAllPagesFrom { my ($string, $exists) = @_; my (@x, @links, $pagename, %seen, %pgExists); my $txt; $string = &RemoveLink($string); $string = &FreeToNormal($string); if (&ValidId($string) ne "") { return "<allpagesfrom($string)>"; } if ($exists =~ /,(\d)/) { $exists = $1; } else { $exists = 2; } %pgExists = (); foreach $pagename (&AllPagesList()) { $pgExists{$pagename} = 1; } ############### ### replaced by gypark ### 링크 목록을 별도로 관리 패치를 적용한 경우는 두번째 라인을, 그렇지 않다면 첫번째 라인을 쓸 것 # @x = &GetPageLinks($string, 1, 0, 0); @x = &GetPageLinksFromFile($string, 1, 0, 0); ### ############### foreach $pagename (@x) { $pagename = (split('/',$string))[0]."$pagename" if ($pagename =~ /^\//); if ($seen{$pagename} != 0) { next; } if (($exists == 0) && ($pgExists{$pagename} == 1)) { next; } if (($exists == 1) && ($pgExists{$pagename} != 1)) { next; } $seen{$pagename}++; push (@links, $pagename); } @links = sort(@links); foreach $pagename (@links) { $txt .= ".... " if ($pagename =~ m|/|); $txt .= &GetPageOrEditLink($pagename) . "<br>"; } return $txt; }