Welcome to the InsideSales Perl challenge! We expect an experienced Perl developer to take ~ 2 hours to finish the challenge: 45 minutes or so for the first part, and 60-90 minutes for the second part.
The command-line parsing library code in this repo contains two bugs, explained below. Fix both of them in separate commits to your local insidesales_challenge repo.
If you run Getopt/t/nounverb.t
multiple times, test 24 ("missing required parameter helptext correct") will fail about 50% of the time.
Note - on certain distros, particularly on Windows, this test may consistently pass or fail 100% of the time. Extra credit: why?
Update GetOpt::Resolved.pm to ensure the help output matches the expected output.
If you try, the option will retain its default value instead of the '0' provided on the command line
See Getopt/t/resolved.t
test #3 ("falsey value (0) overrides default truthy value (push 0)")
The second part of the challenge is writing a script to upload your updated repo to Amazon Simple Storage Service (S3) so we can see your results.
Contact perlchallenge@insidesales.com and provide us with an AWS username you control. You can find your "Canonical User Id" in the "Account Identifiers" section of the "Security Credentials" page of the AWS Console.
We will respond by creating an S3 bucket and giving you read/write access to it.
Then, write a script using Getopt::NounVerb
that supports the following operations:
- Upload a file to a bucket
- Delete a file from a bucket
- List files in a bucket
The bucket, access keys, AWS region, and file (where appropriate) should all be Getopt::NounVerb
parameters.
- Your script should detect .zip files and set the Content-Type accordingly.
- When uploading files, give the bucket owner full permission.
For S3 interactions, use this AWS-provided perl library:
https://aws.amazon.com/items/133?externalID=133
- Add it to your local insidesales_challenge repo and commit it
- Zip up the entire repo.
- Use the script to upload the resulting zip file to the bucket we've shared with you.
- Email us to let us know you are done!
Have fun! If you get stuck, let us know.