|
@@ -0,0 +1,100 @@
|
|
|
+#!/usr/bin/perl
|
|
|
+
|
|
|
+use strict;
|
|
|
+use warnings;
|
|
|
+
|
|
|
+# Read in strings from a file and generate
|
|
|
+# an interesting song/album/artist name
|
|
|
+
|
|
|
+# File to get strings from
|
|
|
+my $seed_file = $ARGV[0];
|
|
|
+my @data = split("\n", `cat $seed_file`);
|
|
|
+
|
|
|
+# Length of random name (in words)
|
|
|
+my $length = int(1 + rand(4 - 1));
|
|
|
+
|
|
|
+my @words;
|
|
|
+
|
|
|
+sub word_from_seed() {
|
|
|
+ my $word = $data[ rand @data ];
|
|
|
+ chomp $word;
|
|
|
+ return $word;
|
|
|
+}
|
|
|
+
|
|
|
+sub get_word {
|
|
|
+ my $tmp_word = word_from_seed();
|
|
|
+ chomp $tmp_word;
|
|
|
+ my $final = "";
|
|
|
+ if ( $tmp_word =~ m/ / ) {
|
|
|
+ my @strings = split(" ", $tmp_word);
|
|
|
+ my $string = $strings[ rand @strings ];
|
|
|
+ $final = $string;
|
|
|
+ } elsif ( $tmp_word =~ m/\./ ) {
|
|
|
+ my @strings = split(".", $tmp_word);
|
|
|
+ my $string = $strings[ rand @strings ];
|
|
|
+ $final = $string;
|
|
|
+ } else {
|
|
|
+ $final = $tmp_word;
|
|
|
+ }
|
|
|
+
|
|
|
+ # Chance to splice
|
|
|
+ my $flip = 1 + int(rand(2));
|
|
|
+ if ( $flip == 1 || $length == 1 ) {
|
|
|
+ # Get word, take the first 3 chars,
|
|
|
+ # save in $splice_word
|
|
|
+ my $splice_word = word_from_seed();
|
|
|
+ if ( length $splice_word >= 3 ) {
|
|
|
+ if ( $splice_word =~ m/(^.{3})/ ) {
|
|
|
+ $splice_word = $1;
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ $splice_word =~ m/(^.{1})/;
|
|
|
+ $splice_word = $1;
|
|
|
+ }
|
|
|
+
|
|
|
+ # Get final word, take last $rand chars,
|
|
|
+ # add to splice_word
|
|
|
+ if ( ! defined $final || $final eq "" ) {
|
|
|
+ $final = word_from_seed();
|
|
|
+ }
|
|
|
+ my $splice_char_num = 1 + int(rand(length $final));
|
|
|
+ if ( $splice_char_num < 1 ) {
|
|
|
+ $splice_char_num = 1;
|
|
|
+ }
|
|
|
+
|
|
|
+ $final =~ m/(.{$splice_char_num}$)/;
|
|
|
+ my $splice_word_2 = $1;
|
|
|
+
|
|
|
+ $final = $splice_word . $splice_word_2;
|
|
|
+ }
|
|
|
+
|
|
|
+ return $final;
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+if ( defined $ARGV[1] && $ARGV[1] eq "--gen-seed" ) {
|
|
|
+ my @seed_words = ();
|
|
|
+ foreach my $i ( 1..10000 ) {
|
|
|
+ my $word = get_word();
|
|
|
+ push(@seed_words, $word);
|
|
|
+ }
|
|
|
+ my $word_list = join("\n", @seed_words);
|
|
|
+ open(my $fh, '>', "generated_seed.txt");
|
|
|
+ print $fh $word_list;
|
|
|
+ close $fh;
|
|
|
+ exit 0;
|
|
|
+}
|
|
|
+
|
|
|
+foreach my $word ( 1..$length ) {
|
|
|
+ push(@words, get_word());
|
|
|
+}
|
|
|
+
|
|
|
+my $output = "";
|
|
|
+foreach my $word (@words){
|
|
|
+ if ( ! defined $word || $word eq "") {
|
|
|
+ next;
|
|
|
+ }
|
|
|
+ $output = $output . $word . " ";
|
|
|
+}
|
|
|
+
|
|
|
+print "$output\n";
|