⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nntp.mirror

📁 source of perl for linux application,
💻 MIRROR
字号:
#!/usr/bin/perl5### Subject: Re: Fuller example of Net::NNTP?### Date:  Tue, 4 Feb 1997 10:37:58 -0800### From: "Paul E. Hoffman" <phoffman@imc.org>### To: Graham Barr <gbarr@ti.com>### ### Thanks for your reply. After looking at the examples, I realized that### you're not doing what I want, which is to store the messages on the local### hard disk with the same message number as what was on the remote. So, I### rolled my own program, although I haven't finished it yet (I have a hook### for expiring, but haven't done it yet).### ### You are welcome to use this in the Net:: distribution if you think it is### useful.###### NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE###### This script is included as-is, I give no guarantee that it will### work on every system###use Net::NNTP;$BaseDir = '/usr/usenet';chdir($BaseDir) or die "Could not cd to $BaseDir\n";# Format of grouplist is:#    groupname<tab>expirationdays# expirationdays is the number of days to leave the articles around;#    set it to 0 if you want the articles to stay forever# If the groupname starts with a #, it is skippedopen(GROUPLIST, 'grouplist.txt') or die "Could not open grouplist.txt\n";while(<GROUPLIST>) {        $Line = $_; chomp($Line);        if($Line eq '') { next };  # Skip blank lines        if(substr($Line, 0, 1) eq '#') { next };  # Skip comments        push(@Groups, $Line)}$NntpPtr = Net::NNTP->new('news.server.com');foreach $GroupLine (@Groups) {        ($GroupName, $GroupExp) = split(/\s/, $GroupLine, 2);        # Process the expiration first (still to be done...)        # See if this is a new group        unless(-e "$BaseDir/$GroupName") {                unless(mkdir("$BaseDir/$GroupName", 0755))                        { die "Could not make $BaseDir/$GroupName\n" }        }        chdir("$BaseDir/$GroupName") or die "Couldn't chdir to $GroupName\n";        # Find the last article in the directory        @AllInDir = <*>; @RevSortedAllInDir = reverse(sort(@AllInDir));        $LenArr = @RevSortedAllInDir;        if($LenArr > 0) { $NumLastInDir = $RevSortedAllInDir[0] }        else { $NumLastInDir = 0 }        ($NumArt, $NumFirst, $NumLast, $XGroupName) =$NntpPtr->group($GroupName);        if($NumLast == $NumLastInDir) { next }  # No new articles        if($NumLast < $NumLastInDir)                { die "In $GroupName, the last number was $NumLast, but the " .                        " last number in the directory was $NumLastInDir\n" }        # Figure out which article to start from        if($NumLastInDir == 0) { $GetArtNum = $NumFirst }        else { $GetArtNum = $NumLastInDir + 1 }        # Now read each of the new articles        while(1) {  # Loop until "last" is called                $ArtRef = $NntpPtr->article($GetArtNum);                @ArtArr = @$ArtRef; $ArtArrLen = @ArtArr;                if($ArtArrLen > 0 ) {  # Skip article numbers that had 0 len                        open(OUT, ">$GetArtNum") or                                die "Could not create $GroupName/$GetArtNum\n";                        print OUT @$ArtRef; close(OUT);                }                # Check if we're at the end                if($GetArtNum == $NumLast) { last }                $GetArtNum += 1;  # Increment the article number to get        }}$NntpPtr->quit;exit;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -