Last active 17 hours ago

Revision b9a5520b42d0fec5b7e9b7a49d26f079a2164c23

urlref.pl Raw
1#!/usr/bin/env perl
2
3use 5.38.2;
4use strict;
5use warnings;
6
7use Getopt::Long qw(GetOptions);
8
9sub usage {
10 print("Usage: urlref.pl [--get-code|--help]\n
11 run without args to add URL\n");
12 exit 0;
13}
14
15my $getcode;
16
17GetOptions(
18 "get-code=s" => \$getcode,
19 "help" => \&usage,
20) or die "\nif you want to get a URL, supply a code: --get-code [CODE]\n";
21
22
23sub encode {
24 my @chars = ("A".."Z","0".."9","_");
25
26 my $string;
27 $string .= $chars[int(rand(@chars))] for 1..3;
28
29 return $string;
30}
31
32
33sub addurl {
34 my $url = <STDIN>;
35 chomp $url;
36 my $encodedurl = encode($url);
37
38 if (!length $url == 0) {
39 print("code is: $encodedurl\n");
40
41 my $filename = "links.txt";
42
43 open(my $fh, ">>", "$filename") or die "could not open $filename: $!";
44 print $fh "$encodedurl $url\n";
45 close $fh;
46
47 print("saved URL to file: $filename\n");
48 } else {
49 die("no URL given");
50 }
51}
52
53if ($getcode) {
54 my $filename = "links.txt";
55
56 open(my $fh, "<", "$filename") or die "could not open $filename: $!";
57 while(my $line = <$fh>) {
58 if($line =~ /^$getcode\s/) {
59 print("URL is: $line");
60 }
61 }
62 close $fh;
63} else {
64 addurl
65}