123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- #!/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;
- my $sorted_list = `cat generated_seed.txt | sort | uniq`;
- open(my $fh2, '>', "generated_seed.txt");
- print $fh2 $sorted_list;
- close $fh2;
- 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";
|